<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Tektosyne</name>
    </assembly>
    <members>
        <member name="T:Tektosyne.Xml.IXmlSerializable">
            <summary>
            Allows the XML serialization and deserialization of an object.</summary>
            <remarks><para>
            <b>IXmlSerializable</b> defines a simple mechanism that implementing classes can use to
            serialize any desired object data to an <see cref="T:System.Xml.XmlWriter"/>, and deserialize object data
            from an <see cref="T:System.Xml.XmlReader"/>.
            </para><para>
            The .NET Framework provides several built-in serialization mechanisms, all of which are
            unfortunately unsuited to the task of creating compact, human-readable XML files:
            </para><list type="bullet"><item>
            <b>BinaryFormatter</b> creates binary files, not XML files.
            </item><item>
            <b>SoapFormatter</b> is intended for remoting, like <b>BinaryFormatter</b>, and creates
            extremely large XML files that are incomprehensible to human readers.
            </item><item>
            <b>XmlSerializer</b> is very slow and requires a zoo of attribute annotations if anything
            but the default behavior is desired.
            </item></list><para>
            There is one standard serialization mechanism that does almost exactly what we need, namely
            <see cref="T:System.Xml.Serialization.IXmlSerializable"/>. However, this interface requires a
            strange method named <see cref="M:System.Xml.Serialization.IXmlSerializable.GetSchema"/>,
            lacks our <see cref="P:Tektosyne.Xml.IXmlSerializable.XmlName"/> property, and does not specify the
            serialization process in sufficient detail.
            </para><para>
            Our <b>IXmlSerializable</b> interface adopts the signatures of the standard interface's two
            useful methods, <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> and <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/>, to give the client complete
            control over the serialization and deserialization process. The <b>XmlReader</b> and
            <b>XmlWriter</b> classes are so efficient and so easy to use (also check out the helper
            methods provided by the <see cref="T:Tektosyne.Xml.XmlUtility"/> class) that this approach
            produces simpler and faster code than any of the built-in serialization mechanisms.
            </para><para>
            (Some of the above information was taken from Dino Esposito, <em>Applied XML Programming for
            Microsoft .NET,</em> Microsoft Press 2003. See page 488 and Chapter 11 in general.)
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Xml.IXmlSerializable.ReadXml(System.Xml.XmlReader)">
            <summary>
            Reads XML data into the <see cref="T:Tektosyne.Xml.IXmlSerializable"/> instance using the specified <see cref="T:System.Xml.XmlReader"/>.</summary>
            <param name="reader">
            The <see cref="T:System.Xml.XmlReader"/> from which to read.</param>
            <exception cref="T:System.Xml.XmlException">
            An error occurred while parsing the XML data provided by <paramref name="reader"/>.
            </exception>
            <exception cref="T:System.Xml.Schema.XmlSchemaException">
            <paramref name="reader"/> is an <see cref="T:System.Xml.XmlValidatingReader"/>, and the XML data did
            not conform to the applicable XML schema.</exception>
            <remarks><para>
            <b>ReadXml</b> replaces the data of the <see cref="T:Tektosyne.Xml.IXmlSerializable"/> instance with any
            matching data read from the specified <paramref name="reader"/>. Any instance data that
            <paramref name="reader"/> fails to supply is left unchanged. The caller should
            initialize all instance data to default values before invoking <b>ReadXml</b>, and
            validate the new instance data after the call returns.
            </para><para>
            The current node of the specified <paramref name="reader"/> must be either an element
            start tag (<b>XmlNodeType.Element</b>) named <see cref="P:Tektosyne.Xml.IXmlSerializable.XmlName"/>, or a node from which
            such a start tag can be reached by a single call to <see cref="M:System.Xml.XmlReader.MoveToContent"/>. <b>ReadXml</b> may either ignore unexpected data or
            throw an exception.</para></remarks>
        </member>
        <member name="M:Tektosyne.Xml.IXmlSerializable.WriteXml(System.Xml.XmlWriter)">
            <summary>
            Writes the current data of the <see cref="T:Tektosyne.Xml.IXmlSerializable"/> instance to the specified
            <see cref="T:System.Xml.XmlWriter"/>.</summary>
            <param name="writer">
            The <see cref="T:System.Xml.XmlWriter"/> to which to write.</param>
            <remarks><para>
            <b>WriteXml</b> writes all data of the <see cref="T:Tektosyne.Xml.IXmlSerializable"/> instance for which
            an XML representation is defined to the specified <paramref name="writer"/>.
            </para><para>
            Writing begins with an XML element start tag (<b>XmlNodeType.Element</b>) named <see cref="P:Tektosyne.Xml.IXmlSerializable.XmlName"/>, continues with any required attributes, text, or sub-nodes, and ends
            with an XML element end tag (<b>XmlNodeType.EndElement</b>) matching the initial start
            tag. An empty element may be written if no data is available.</para></remarks>
        </member>
        <member name="P:Tektosyne.Xml.IXmlSerializable.XmlName">
            <summary>
            Gets the name of the XML element associated with the <see cref="T:Tektosyne.Xml.IXmlSerializable"/>
            instance.</summary>
            <value>
            A <see cref="T:System.String"/> indicating the name of the XML element to which the data of the
            <see cref="T:Tektosyne.Xml.IXmlSerializable"/> instance is serialized.</value>
            <remarks><para>
            <b>XmlName</b> specifies the name of the XML element (<b>XmlNodeType.Element</b>) that
            is expected by <see cref="M:Tektosyne.Xml.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> and created by <see cref="M:Tektosyne.Xml.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/>.
            </para><para>
            The value of <b>XmlName</b> is usually identical for all instances of a particular class
            that implements <see cref="T:Tektosyne.Xml.IXmlSerializable"/>. Unfortunately, C# interfaces cannot
            specify static methods or properties, so <b>XmlName</b> must be specified as an instance
            member. Implementing classes that require static XML element names should provide a
            constant field or static property called <b>ConstXmlName</b> that returns the same value
            as <b>XmlName</b>.</para></remarks>
        </member>
        <member name="T:Tektosyne.Windows.TaskEvents">
            <summary>
            Provides events to communicate the status of a task.</summary>
            <remarks><para>
            <b>TaskEvents</b> bundles several general-purpose events that allow a worker algorithm to
            broadcast the status of a given task to any listeners, as follows:
            </para><list type="bullet"><item>
            Two events to notify any listeners that the task was completed, or that an exception has
            occurred.
            </item><item>
            Two events to send text messages and progress indicators to any listeners.
            </item><item>
            A timer that clients can query to determine when to raise message and progress events.
            </item></list><para>
            Moreover, <b>TaskEvents</b> allows the worker algorithm and all listeners to live on
            different threads. Clients may specify a <see cref="P:Tektosyne.Windows.TaskEvents.Dispatcher"/> on which all event
            handlers are invoked so that the calls are marshalled to the GUI thread.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.TaskEvents.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.TaskEvents"/> class. </overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.TaskEvents"/> class with default
            properties.</summary>
        </member>
        <member name="M:Tektosyne.Windows.TaskEvents.#ctor(System.Windows.Threading.Dispatcher)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.TaskEvents"/> class with the specified
            <see cref="P:Tektosyne.Windows.TaskEvents.Dispatcher"/>.</summary>
            <param name="dispatcher">
            The initial value for the <see cref="P:Tektosyne.Windows.TaskEvents.Dispatcher"/> property. This argument may be
            a null reference.</param>
        </member>
        <member name="M:Tektosyne.Windows.TaskEvents.OnTaskComplete(System.Object)">
            <summary>
            Raises the <see cref="E:Tektosyne.Windows.TaskEvents.TaskComplete"/> event.</summary>
            <param name="sender">
            The <see cref="T:System.Object"/> sending the event.</param>
            <remarks><para>
            <b>OnTaskComplete</b> raises the <see cref="E:Tektosyne.Windows.TaskEvents.TaskComplete"/> event. Use this method to
            notify any listeners that work on the current task is complete.
            </para><para>
            If <see cref="P:Tektosyne.Windows.TaskEvents.Dispatcher"/> is valid and <see cref="M:System.Windows.Threading.Dispatcher.CheckAccess"/> fails,
            <b>OnTaskComplete</b> performs an asynchronous delegate invocation via <see cref="M:System.Windows.Threading.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority,System.Delegate)"/> and with the current <see cref="P:Tektosyne.Windows.TaskEvents.Priority"/>.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.TaskEvents.OnTaskException(System.Object,System.Exception)">
            <summary>
            Raises the <see cref="E:Tektosyne.Windows.TaskEvents.TaskException"/> event with the specified <see cref="T:System.Exception"/>.
            </summary>
            <param name="sender">
            The <see cref="T:System.Object"/> sending the event.</param>
            <param name="exception">
            The <see cref="T:System.Exception"/> that occurred while working on the task.</param>
            <remarks><para>
            <b>OnTaskException</b> raises the <see cref="E:Tektosyne.Windows.TaskEvents.TaskException"/> event with an <see cref="T:Tektosyne.EventArgs`1"/> object that wraps the specified <paramref name="exception"/>. Use this method to notify any listeners of an unrecoverable error
            that occurred while working on the current task.
            </para><para>
            Unlike the other callback methods, <b>OnTaskException</b> invokes its associated event
            handlers <em>synchronously</em> with a fixed priority of <see cref="F:System.Windows.Threading.DispatcherPriority.Send"/> if <see cref="P:Tektosyne.Windows.TaskEvents.Dispatcher"/> is valid and <see cref="M:System.Windows.Threading.Dispatcher.CheckAccess"/> fails. This allows clients to examine the situation
            and decide on further actions while the background thread is blocked.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.TaskEvents.OnTaskMessage(System.Object,System.String)">
            <overloads>
            Raises the <see cref="E:Tektosyne.Windows.TaskEvents.TaskMessage"/> event with the specified message.</overloads>
            <summary>
            Raises the <see cref="E:Tektosyne.Windows.TaskEvents.TaskMessage"/> event with the specified message.</summary>
            <param name="sender">
            The <see cref="T:System.Object"/> sending the event.</param>
            <param name="message">
            A <see cref="T:System.String"/> containing the message text.</param>
            <remarks><para>
            <b>OnTaskMessage</b> raises the <see cref="E:Tektosyne.Windows.TaskEvents.TaskMessage"/> event with a <see cref="T:Tektosyne.EventArgs`1"/> object that wraps the specified <paramref name="message"/>.
            Use this method and its overloads to send any listeners a text message concerning the
            current task.
            </para><para>
            If <see cref="P:Tektosyne.Windows.TaskEvents.Dispatcher"/> is valid and <see cref="M:System.Windows.Threading.Dispatcher.CheckAccess"/> fails,
            <b>OnTaskMessage</b> performs an asynchronous delegate invocation via <see cref="M:System.Windows.Threading.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority,System.Delegate)"/> and with the current <see cref="P:Tektosyne.Windows.TaskEvents.Priority"/>.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.TaskEvents.OnTaskMessage(System.Object,System.String,System.Object[])">
            <summary>
            Raises the <see cref="E:Tektosyne.Windows.TaskEvents.TaskMessage"/> event with a formatted message containing the
            values of the specified objects.</summary>
            <param name="sender">
            The <see cref="T:System.Object"/> sending the event.</param>
            <param name="format">
            A <see cref="T:System.String"/> containing zero or more format specifications.</param>
            <param name="args">
            An <see cref="T:System.Array"/> of zero or more <see cref="T:System.Object"/> instances to be formatted.
            </param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="format"/> or <paramref name="args"/> is a null reference.</exception>
            <exception cref="T:System.FormatException"><para>
            <paramref name="format"/> contains an invalid format specification.
            </para><para>-or-</para><para>
            A number indicating an argument to be formatted is less than zero, or greater than or
            equal to the length of the <paramref name="args"/> array.</para></exception>
            <remarks>
            <b>OnTaskMessage</b> invokes <see cref="M:System.String.Format(System.String,System.Object)"/> with the specified <paramref name="format"/> and <paramref name="args"/>, and then calls the basic <see cref="M:Tektosyne.Windows.TaskEvents.OnTaskMessage(System.Object,System.String)"/> overload to raise the <see cref="E:Tektosyne.Windows.TaskEvents.TaskMessage"/>
            event with the resulting formatted message.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.TaskEvents.OnTaskMessage(System.Object,System.IFormatProvider,System.String,System.Object[])">
            <summary>
            Raises the <see cref="E:Tektosyne.Windows.TaskEvents.TaskMessage"/> event with a formatted message containing the
            values of the specified objects, using the specified culture-specific formatting
            information.</summary>
            <param name="sender">
            The <see cref="T:System.Object"/> sending the event.</param>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> object that supplies culture-specific formatting
            information.</param>
            <param name="format">
            A <see cref="T:System.String"/> containing zero or more format specifications.</param>
            <param name="args">
            An <see cref="T:System.Array"/> of zero or more <see cref="T:System.Object"/> instances to be formatted.
            </param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="format"/> or <paramref name="args"/> is a null reference.</exception>
            <exception cref="T:System.FormatException"><para>
            <paramref name="format"/> contains an invalid format specification.
            </para><para>-or-</para><para>
            A number indicating an argument to be formatted is less than zero, or greater than or
            equal to the length of the <paramref name="args"/> array.</para></exception>
            <remarks>
            <b>OnTaskMessage</b> invokes <see cref="M:System.String.Format(System.String,System.Object)"/> with the specified <paramref name="provider"/>, <paramref name="format"/>, and <paramref name="args"/>, and then
            calls the basic <see cref="M:Tektosyne.Windows.TaskEvents.OnTaskMessage(System.Object,System.String)"/> overload to raise the <see cref="E:Tektosyne.Windows.TaskEvents.TaskMessage"/> event with the resulting formatted message.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.TaskEvents.OnTaskProgress(System.Object,System.Int32)">
            <summary>
            Raises the <see cref="E:Tektosyne.Windows.TaskEvents.TaskProgress"/> event with the specified progress indicator.
            </summary>
            <param name="sender">
            The <see cref="T:System.Object"/> sending the event.</param>
            <param name="progress">
            An <see cref="T:System.Int32"/> value indicating the progress made on the task.</param>
            <remarks><para>
            <b>OnTaskProgress</b> raises the <see cref="E:Tektosyne.Windows.TaskEvents.TaskProgress"/> event with a <see cref="T:Tektosyne.EventArgs`1"/> object that wraps the specified <paramref name="progress"/>.
            Use this method to send any listeners a numerical indicator for the progress made on the
            current task.
            </para><para>
            If <see cref="P:Tektosyne.Windows.TaskEvents.Dispatcher"/> is valid and <see cref="M:System.Windows.Threading.Dispatcher.CheckAccess"/> fails,
            <b>OnTaskProgress</b> performs an asynchronous delegate invocation via <see cref="M:System.Windows.Threading.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority,System.Delegate)"/> and with the current <see cref="P:Tektosyne.Windows.TaskEvents.Priority"/>.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.TaskEvents.RestartTimer">
            <overloads>
            Restarts the <see cref="P:Tektosyne.Windows.TaskEvents.Timer"/>.</overloads>
            <summary>
            Unconditionally restarts the <see cref="P:Tektosyne.Windows.TaskEvents.Timer"/>.</summary>
            <remarks>
            <b>RestartTimer</b> calls <see cref="M:System.Diagnostics.Stopwatch.Reset"/> and <see cref="M:System.Diagnostics.Stopwatch.Start"/> on the associated <see cref="P:Tektosyne.Windows.TaskEvents.Timer"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.TaskEvents.RestartTimer(System.Int64)">
            <summary>
            Restarts the <see cref="P:Tektosyne.Windows.TaskEvents.Timer"/> if the specified amount of time has elapsed.</summary>
            <param name="elapsed">
            The amount of time, in milliseconds, to compare against the <see cref="P:System.Diagnostics.Stopwatch.ElapsedMilliseconds"/> property of the <see cref="P:Tektosyne.Windows.TaskEvents.Timer"/>.</param>
            <returns>
            <c>true</c> if at least <paramref name="elapsed"/> milliseconds have accumulated on the
            <see cref="P:Tektosyne.Windows.TaskEvents.Timer"/> since it was last reset; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="elapsed"/> is less than zero.</exception>
            <remarks>
            <b>RestartTimer</b> calls <see cref="M:System.Diagnostics.Stopwatch.Reset"/> and <see cref="M:System.Diagnostics.Stopwatch.Start"/> on the associated <see cref="P:Tektosyne.Windows.TaskEvents.Timer"/> when returning
            <c>true</c>; otherwise, the <see cref="P:Tektosyne.Windows.TaskEvents.Timer"/> remains unchanged.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.TaskEvents.Dispatcher">
            <summary>
            Gets the <see cref="T:System.Windows.Threading.Dispatcher"/> that lets the worker thread communicate with the
            foreground thread.</summary>
            <value>
            A <see cref="T:System.Windows.Threading.Dispatcher"/> used to marshal event handler calls to the application's
            foreground thread. The default is a null reference, indicating that no cross-thread
            marshalling is desired.</value>
            <remarks>
            The event methods check <b>Dispatcher</b> to determine how to raise their respective
            events. If <b>Dispatcher</b> is a null reference or its <see cref="M:System.Windows.Threading.Dispatcher.CheckAccess"/> method succeeds, the event handlers are invoked
            directly; otherwise, they are invoked by calling <see cref="M:System.Windows.Threading.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority,System.Delegate)"/>
            or <see cref="M:System.Windows.Threading.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority,System.Delegate)"/> on the <b>Dispatcher</b>.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.TaskEvents.Priority">
            <summary>
            Gets or sets the priority for asynchronous <see cref="P:Tektosyne.Windows.TaskEvents.Dispatcher"/> calls.</summary>
            <value>
            A <see cref="T:System.Windows.Threading.DispatcherPriority"/> value indicating the priority for asynchronous
            cross-thread calls marshalled by the <see cref="P:Tektosyne.Windows.TaskEvents.Dispatcher"/>. The default is <see cref="F:System.Windows.Threading.DispatcherPriority.Normal"/>.</value>
            <remarks>
            <b>Priority</b> is ignored by <see cref="M:Tektosyne.Windows.TaskEvents.OnTaskException(System.Object,System.Exception)"/> which always performs
            synchronous calls with <see cref="F:System.Windows.Threading.DispatcherPriority.Send"/> priority.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.TaskEvents.Timer">
            <summary>
            Gets a timer to control timed progress display.</summary>
            <value>
            A <see cref="T:System.Diagnostics.Stopwatch"/> that was created and started during construction of this <see cref="T:Tektosyne.Windows.TaskEvents"/> instance.</value>
            <remarks>
            Clients may read or reset the <b>Timer</b> as needed to determine when to raise
            notification events. Use one of the <see cref="M:Tektosyne.Windows.TaskEvents.RestartTimer"/> overloads to restart the
            <b>Timer</b>, either unconditionally or when a specific amount of time has elapsed.
            </remarks>
        </member>
        <member name="E:Tektosyne.Windows.TaskEvents.TaskComplete">
            <summary>
            Occurs when the task is complete.</summary>
            <remarks>
            <b>TaskComplete</b> is raised by the <see cref="M:Tektosyne.Windows.TaskEvents.OnTaskComplete(System.Object)"/> method to indicate
            that work on the current task is complete.</remarks>
        </member>
        <member name="E:Tektosyne.Windows.TaskEvents.TaskException">
            <summary>
            Occurs when an exception was raised.</summary>
            <remarks>
            <b>TaskException</b> is raised by the <see cref="M:Tektosyne.Windows.TaskEvents.OnTaskException(System.Object,System.Exception)"/> method to indicate 
            that an unrecoverable error occurred while working on the current task.</remarks>
        </member>
        <member name="E:Tektosyne.Windows.TaskEvents.TaskMessage">
            <summary>
            Occurs when a text message is sent.</summary>
            <remarks>
            <b>TaskMessage</b> is raised by the <see cref="M:Tektosyne.Windows.TaskEvents.OnTaskMessage(System.Object,System.String)"/> method to broadcast a
            text message concerning the current task.</remarks>
        </member>
        <member name="E:Tektosyne.Windows.TaskEvents.TaskProgress">
            <summary>
            Occurs when progress is made on the task.</summary>
            <remarks>
            <b>TaskProgress</b> is raised by the <see cref="M:Tektosyne.Windows.TaskEvents.OnTaskProgress(System.Object,System.Int32)"/> method to broadcast a
            numerical indicator for the progress made on the current task.</remarks>
        </member>
        <member name="T:Tektosyne.Win32Api.MapiError">
            <summary>
            Defines error codes returned by Simple MAPI calls.</summary>
            <remarks>
            <b>MapiError</b> defines all error codes that can be returned by Simple MAPI functions
            calls.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.SUCCESS_SUCCESS">
            <summary>
            The operation completed successfully.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_USER_ABORT">
            <summary>
            The user cancelled one of the dialog boxes.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_FAILURE">
            <summary>
            One or more unspecified errors occurred.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_LOGIN_FAILURE">
            <summary>
            There was no default logon, and the user failed to log on successfully when the logon
            dialog was displayed.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_DISK_FULL">
            <summary>
            An attachment could not be written to a temporary file because there was not enough
            space on the disk.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_INSUFFICIENT_MEMORY">
            <summary>
            There was insufficient memory to proceed.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_ACCESS_DENIED">
            <summary>
            An attempt to copy a profile or message service failed.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_TOO_MANY_SESSIONS">
            <summary>
            The user had too many sessions open simultaneously.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_TOO_MANY_FILES">
            <summary>
            There were too many file attachments.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_TOO_MANY_RECIPIENTS">
            <summary>
            There were too many recipients.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_ATTACHMENT_NOT_FOUND">
            <summary>
            The specified attachment was not found.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_ATTACHMENT_OPEN_FAILURE">
            <summary>
            The specified attachment could not be opened.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_ATTACHMENT_WRITE_FAILURE">
            <summary>
            An attachment could not be written to a temporary file. Check directory permissions.
            </summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_UNKNOWN_RECIPIENT">
            <summary>
            A recipient did not appear in the address list.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_BAD_RECIPTYPE">
            <summary>
            The type of a recipient was not <see cref="F:Tektosyne.Win32Api.MapiRecipClass.MAPI_TO"/>, <see cref="F:Tektosyne.Win32Api.MapiRecipClass.MAPI_CC"/>, or <see cref="F:Tektosyne.Win32Api.MapiRecipClass.MAPI_BCC"/>.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_NO_MESSAGES">
            <summary>
            A matching message could not be found.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_INVALID_MESSAGE">
            <summary>
            An invalid message identifier was passed in the <b>lpszMessageID</b> parameter.
            </summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_TEXT_TOO_LARGE">
            <summary>
            The text in the message was too large.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_INVALID_SESSION">
            <summary>
            An invalid session handle was passed in the <b>lhSession</b> parameter.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_TYPE_NOT_SUPPORTED">
            <summary>
            Type not supported (undocumented error code).</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_AMBIGUOUS_RECIPIENT">
            <summary>
            A recipient matched more than one of the recipient descriptor structures and <see cref="F:Tektosyne.Win32Api.MapiFlags.MAPI_DIALOG"/> was not set.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_MESSAGE_IN_USE">
            <summary>
            Message in use (undocumented error code).</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_NETWORK_FAILURE">
            <summary>
            A network error prevented successful completion of the operation.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_INVALID_EDITFIELDS">
            <summary>
            The value of the <b>nEditFields</b> parameter was outside the range of 0 through 4.
            </summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_INVALID_RECIPS">
            <summary>
            One or more recipients were invalid or did not resolve to any address.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiError.MAPI_E_NOT_SUPPORTED">
            <summary>
            The operation was not supported by the underlying messaging system.</summary>
        </member>
        <member name="T:Tektosyne.Triplet`3">
            <summary>
            Provides an immutable triplet of three arbitrary objects.</summary>
            <typeparam name="T1">
            The type of the first object.</typeparam>
            <typeparam name="T2">
            The type of the second object.</typeparam>
            <typeparam name="T3">
            The type of the third object.</typeparam>
            <remarks>
            <b>Triplet</b> is modelled on the standard <b>System.Web.UI.Triplet</b> class but is
            implemented as an immutable generic structure rather than a simple class.</remarks>
        </member>
        <member name="M:Tektosyne.Triplet`3.#ctor(`0,`1,`2)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Triplet`3"/> structure.</summary>
            <param name="first">
            The initial value for the <see cref="P:Tektosyne.Triplet`3.First"/> property.</param>
            <param name="second">
            The initial value for the <see cref="P:Tektosyne.Triplet`3.Second"/> property.</param>
            <param name="third">
            The initial value for the <see cref="P:Tektosyne.Triplet`3.Third"/> property.</param>
        </member>
        <member name="F:Tektosyne.Triplet`3.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.Triplet`3"/> instance.</summary>
            <remarks>
            <b>Empty</b> contains a <see cref="T:Tektosyne.Triplet`3"/> instance that was created with
            the default constructor.</remarks>
        </member>
        <member name="M:Tektosyne.Triplet`3.GetHashCode">
            <summary>
            Returns the hash code for this <see cref="T:Tektosyne.Triplet`3"/> instance.</summary>
            <returns>
            An <see cref="T:System.Int32"/> hash code.</returns>
            <remarks>
            <b>GetHashCode</b> combines the results of <see cref="M:System.Collections.Generic.EqualityComparer`1.GetHashCode(`0)"/>
            for the <see cref="P:Tektosyne.Triplet`3.First"/>, <see cref="P:Tektosyne.Triplet`3.Second"/>, and <see cref="P:Tektosyne.Triplet`3.Third"/> properties.
            </remarks>
        </member>
        <member name="M:Tektosyne.Triplet`3.ToString">
            <summary>
            Returns a <see cref="T:System.String"/> that represents the <see cref="T:Tektosyne.Triplet`3"/>.
            </summary>
            <returns>
            A <see cref="T:System.String"/> containing the culture-invariant string representations of the
            <see cref="P:Tektosyne.Triplet`3.First"/>, <see cref="P:Tektosyne.Triplet`3.Second"/>, and <see cref="P:Tektosyne.Triplet`3.Third"/> properties.</returns>
        </member>
        <member name="M:Tektosyne.Triplet`3.op_Equality(Tektosyne.Triplet{`0,`1,`2},Tektosyne.Triplet{`0,`1,`2})">
            <summary>
            Determines whether two <see cref="T:Tektosyne.Triplet`3"/> instances have the same value.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Triplet`3"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Triplet`3"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.Triplet`3.Equals(Tektosyne.Triplet{`0,`1,`2})"/> method to test the two
            <see cref="T:Tektosyne.Triplet`3"/> instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Triplet`3.op_Inequality(Tektosyne.Triplet{`0,`1,`2},Tektosyne.Triplet{`0,`1,`2})">
            <summary>
            Determines whether two <see cref="T:Tektosyne.Triplet`3"/> instances have different values.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Triplet`3"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Triplet`3"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is different from the value of
            <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.Triplet`3.Equals(Tektosyne.Triplet{`0,`1,`2})"/> method to test the two
            <see cref="T:Tektosyne.Triplet`3"/> instances for value inequality.</remarks>
        </member>
        <member name="M:Tektosyne.Triplet`3.Equals(System.Object)">
            <overloads>
            Determines whether two <see cref="T:Tektosyne.Triplet`3"/> instances have the same value.
            </overloads>
            <summary>
            Determines whether this <see cref="T:Tektosyne.Triplet`3"/> instance and a specified object,
            which must be a <see cref="T:Tektosyne.Triplet`3"/>, have the same value.</summary>
            <param name="obj">
            An <see cref="T:System.Object"/> to compare to this <see cref="T:Tektosyne.Triplet`3"/> instance.
            </param>
            <returns>
            <c>true</c> if <paramref name="obj"/> is another <see cref="T:Tektosyne.Triplet`3"/>
            instance and its value is the same as this instance; otherwise, <c>false</c>.</returns>
            <remarks>
            If the specified <paramref name="obj"/> is another <see cref="T:Tektosyne.Triplet`3"/>
            instance, <b>Equals</b> invokes the strongly-typed <see cref="M:Tektosyne.Triplet`3.Equals(Tektosyne.Triplet{`0,`1,`2})"/> overload to test the two instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Triplet`3.Equals(Tektosyne.Triplet{`0,`1,`2})">
            <summary>
            Determines whether this instance and a specified <see cref="T:Tektosyne.Triplet`3"/> have
            the same value.</summary>
            <param name="triplet">
            A <see cref="T:Tektosyne.Triplet`3"/> to compare to this instance.</param>
            <returns>
            <c>true</c> if the value of <paramref name="triplet"/> is the same as this instance;
            otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> compares the values of the <see cref="P:Tektosyne.Triplet`3.First"/>, <see cref="P:Tektosyne.Triplet`3.Second"/>, and
            <see cref="P:Tektosyne.Triplet`3.Third"/> properties of the two <see cref="T:Tektosyne.Triplet`3"/> instances to
            test for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Triplet`3.Equals(Tektosyne.Triplet{`0,`1,`2},Tektosyne.Triplet{`0,`1,`2})">
            <summary>
            Determines whether two specified <see cref="T:Tektosyne.Triplet`3"/> instances have the same
            value.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Triplet`3"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Triplet`3"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> invokes the non-static <see cref="M:Tektosyne.Triplet`3.Equals(Tektosyne.Triplet{`0,`1,`2})"/> overload to
            test the two <see cref="T:Tektosyne.Triplet`3"/> instances for value equality.</remarks>
        </member>
        <member name="P:Tektosyne.Triplet`3.First">
            <summary>
            Gets the first object of the <see cref="T:Tektosyne.Triplet`3"/>.</summary>
            <value>
            The first object of the <see cref="T:Tektosyne.Triplet`3"/>.</value>
        </member>
        <member name="P:Tektosyne.Triplet`3.Second">
            <summary>
            Gets the second object of the <see cref="T:Tektosyne.Triplet`3"/>.</summary>
            <value>
            The second object of the <see cref="T:Tektosyne.Triplet`3"/>.</value>
        </member>
        <member name="P:Tektosyne.Triplet`3.Third">
            <summary>
            Gets the third object of the <see cref="T:Tektosyne.Triplet`3"/>.</summary>
            <value>
            The third object of the <see cref="T:Tektosyne.Triplet`3"/>.</value>
        </member>
        <member name="T:Tektosyne.Collections.CollectionsUtility">
            <summary>
            Provides auxiliary methods for <b>System.Collections</b>.</summary>
            <remarks>
            <b>CollectionsUtility</b> methods usually omit explicit argument checking for performance
            reasons if the error case would result in identical or similar exceptions within the method
            body.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.ChangeKey``2(System.Collections.Generic.IDictionary{``0,``1},``0,``0)">
            <overloads>
            Changes all occurrences of the specified key in a collection.</overloads>
            <summary>
            Changes the specified key in an <see cref="T:System.Collections.Generic.IDictionary`2"/> collection to
            another key.</summary>
            <typeparam name="TKey">
            The type of all keys in the collection.</typeparam>
            <typeparam name="TValue">
            The type of all values in the collection.</typeparam>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> collection whose keys to change.</param>
            <param name="oldKey">
            The key to remove from <paramref name="dictionary"/>.</param>
            <param name="newKey">
            The key to store in <paramref name="dictionary"/> with the value of the <paramref name="oldKey"/> element.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="dictionary"/>, <paramref name="oldKey"/>, or <paramref name="newKey"/>
            is a null reference.</exception>
            <remarks><para>
            <b>ChangeKey</b> removes the element with the specified <paramref name="oldKey"/> from
            the specified <paramref name="dictionary"/>, and then adds the element's old <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> back with the specified <paramref name="newKey"/>, effectively changing the <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/>
            component of an element.
            </para><para>
            If the <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> component of a changed element
            implements the <see cref="T:Tektosyne.Collections.IMutableKeyedValue`1"/> interface, its <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> property is also set to <paramref name="newKey"/>.
            </para><para>
            If the specified <paramref name="oldKey"/> does not exist in the <paramref name="dictionary"/>, <b>ChangeKey</b> silently adds an element with <paramref name="newKey"/> and the default value for <typeparamref name="TValue"/>.
            </para><para>
            If the specified <paramref name="newKey"/> already exists in the <paramref name="dictionary"/>, it is silently overwritten.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.ChangeKey``2(System.Collections.Generic.IList{System.Collections.Generic.KeyValuePair{``0,``1}},``0,``0)">
            <summary>
            Changes all occurrences of the specified key in an <see cref="T:System.Collections.Generic.IList`1"/> collection to
            another key.</summary>
            <typeparam name="TKey">
            The type of all keys in the collection.</typeparam>
            <typeparam name="TValue">
            The type of all values in the collection.</typeparam>
            <param name="list">
            An <see cref="T:System.Collections.Generic.IList`1"/> collection containing the <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements whose keys to change.</param>
            <param name="oldKey">
            The key to remove from <paramref name="list"/>.</param>
            <param name="newKey">
            The key to store in <paramref name="list"/> with the values of all <paramref name="oldKey"/> elements.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/>, <paramref name="oldKey"/>, or <paramref name="newKey"/> is a
            null reference.</exception>
            <remarks><para>
            <b>ChangeKey</b> changes all occurrences of the specified <paramref name="oldKey"/> in
            the <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> components of the specified <paramref name="list"/> to the specified <paramref name="newKey"/>. The index positions and <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> components of the elements containing
            <paramref name="oldKey"/> remain unchanged.
            </para><para>
            If the <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> component of a changed element
            implements the <see cref="T:Tektosyne.Collections.IMutableKeyedValue`1"/> interface, its <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> property is also set to <paramref name="newKey"/>.
            </para><para>
            If the specified <paramref name="oldKey"/> does not exist in the <paramref name="list"/>, <b>ChangeKey</b> silently adds an element with <paramref name="newKey"/>
            and the default value for <typeparamref name="TValue"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.ConditionalSwap``1(System.Collections.Generic.IList{``0},System.Comparison{``0},System.Int32,System.Int32)">
            <summary>
            Conditionally swaps two elements in the specified <see cref="T:System.Collections.Generic.IList`1"/> collection,
            based on the specified <see cref="T:System.Comparison`1"/> method.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection whose elements to swap.</param>
            <param name="comparison">
            The <see cref="T:System.Comparison`1"/> method that defines the sorting order.</param>
            <param name="first">
            The zero-based index of the first element to swap.</param>
            <param name="second">
            The zero-based index of the second element to swap.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> or <paramref name="comparison"/> is a null reference.
            </exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="first"/> or <paramref name="second"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="first"/> or <paramref name="second"/> is equal to or greater than the
            <see cref="P:System.Collections.Generic.ICollection`1.Count"/> of the specified <paramref name="list"/>.
            </para></exception>
            <remarks>
            <b>ConditionalSwap</b> compares the elements at the <paramref name="first"/> and
            <paramref name="second"/> indices within the specified <paramref name="list"/> using the
            specified <paramref name="comparison"/>, and swaps them exactly if the <paramref name="first"/> element compares greater than the <paramref name="second"/> element.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.CountKey``2(System.Collections.Generic.IDictionary{``0,``1},``0)">
            <overloads>
            Counts the all occurrences of the specified key in a collection.</overloads>
            <summary>
            Counts the occurrences of the specified key in an <see cref="T:System.Collections.Generic.IDictionary`2"/> collection.</summary>
            <typeparam name="TKey">
            The type of all keys in the collection.</typeparam>
            <typeparam name="TValue">
            The type of all values in the collection.</typeparam>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> collection whose keys to count.</param>
            <param name="key">
            The key to count in <paramref name="dictionary"/>.</param>
            <returns>
            One if <paramref name="key"/> was found in <paramref name="dictionary"/>; otherwise,
            zero.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="dictionary"/> or <paramref name="key"/> is a null reference.</exception>
            <remarks>
            <b>CountKey</b> returns the number of occurrences of the specified <paramref name="key"/> in the specified <paramref name="dictionary"/>. By definition, this number
            is either zero or one. The <paramref name="dictionary"/> remains unchanged.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.CountKey``2(System.Collections.Generic.IList{System.Collections.Generic.KeyValuePair{``0,``1}},``0)">
            <summary>
            Counts the occurrences of the specified key in an <see cref="T:System.Collections.Generic.IList`1"/> collection.
            </summary>
            <typeparam name="TKey">
            The type of all keys in the collection.</typeparam>
            <typeparam name="TValue">
            The type of all values in the collection.</typeparam>
            <param name="list">
            An <see cref="T:System.Collections.Generic.IList`1"/> collection containing the <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements whose keys to count.</param>
            <param name="key">
            The key to count in <paramref name="list"/>.</param>
            <returns>
            The number of occurrences of <paramref name="key"/> in <paramref name="list"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> or <paramref name="key"/> is a null reference.</exception>
            <remarks>
            <b>CountKey</b> returns the number of occurrences of the specified <paramref name="key"/> in the specified <paramref name="list"/>. This number can be greater than
            one because <see cref="T:System.Collections.Generic.IList`1"/> does not require unique <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> values. The <paramref name="list"/> remains unchanged.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.DeleteKey``2(System.Collections.Generic.IDictionary{``0,``1},``0)">
            <overloads>
            Deletes all elements with the specified key from a collection.</overloads>
            <summary>
            Deletes the element with the specified key from an <see cref="T:System.Collections.Generic.IDictionary`2"/> collection.</summary>
            <typeparam name="TKey">
            The type of all keys in the collection.</typeparam>
            <typeparam name="TValue">
            The type of all values in the collection.</typeparam>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> collection whose element to delete.</param>
            <param name="key">
            The key of the element to delete from <paramref name="dictionary"/>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="dictionary"/> or <paramref name="key"/> is a null reference.</exception>
            <remarks><para>
            <b>DeleteKey</b> deletes the element with the specified <paramref name="key"/> by
            invoking <see cref="M:System.Collections.Generic.IDictionary`2.Remove(`0)"/> on the specified <paramref name="dictionary"/>.
            </para><para>
            This method is provided only for symmetry with the <see cref="T:System.Collections.Generic.IList`1"/> overload of
            <b>DeleteKey</b>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.DeleteKey``2(System.Collections.Generic.IList{System.Collections.Generic.KeyValuePair{``0,``1}},``0)">
            <summary>
            Deletes all elements with the specified key from an <see cref="T:System.Collections.Generic.IList`1"/> collection.
            </summary>
            <typeparam name="TKey">
            The type of all keys in the collection.</typeparam>
            <typeparam name="TValue">
            The type of all values in the collection.</typeparam>
            <param name="list">
            An <see cref="T:System.Collections.Generic.IList`1"/> collection containing the <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements to delete.</param>
            <param name="key">
            The key of the elements to delete from <paramref name="list"/>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> or <paramref name="key"/> is a null reference.</exception>
            <remarks>
            <b>DeleteKey</b> deletes all elements with the specified <paramref name="key"/> from the
            specified <paramref name="list"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.MoveItem``1(System.Collections.Generic.IList{``0},``0,System.Int32)">
            <summary>
            Moves the specified item in a generic <see cref="T:System.Collections.Generic.IList`1"/> collection by a specific
            offset.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection containing the item to move.</param>
            <param name="item">
            The item to move.</param>
            <param name="offset">
            The number of index positions by which to move the specified <paramref name="item"/>.
            </param>
            <returns>
            The new index position of <paramref name="item"/> if it was found in the specified
            <paramref name="list"/>; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> or <paramref name="item"/> is a null reference.</exception>
            <remarks><para>
            <b>MoveItem</b> removes the specified <paramref name="item"/> from the specified
            <paramref name="list"/> and adds it back at the specified <paramref name="offset"/> from
            its original index position.
            </para><para>
            The <paramref name="item"/> is placed at the beginning or at the end of the <paramref name="list"/> if the new position would be less than zero or higher than the last
            position, respectively. The items in-between are shifted up or down accordingly.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.MoveItemUntyped(System.Collections.IList,System.Object,System.Int32)">
            <summary>
            Moves the specified item in a non-generic <see cref="T:System.Collections.IList"/> collection by a specific
            offset.</summary>
            <param name="list">
            The <see cref="T:System.Collections.IList"/> collection containing the item to move.</param>
            <param name="item">
            The item to move.</param>
            <param name="offset">
            The number of index positions by which to move the specified <paramref name="item"/>.
            </param>
            <returns>
            The new index position of <paramref name="item"/> if it was found in the specified
            <paramref name="list"/>; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> or <paramref name="item"/> is a null reference.</exception>
            <remarks><para>
            <b>MoveItemUntyped</b> removes the specified <paramref name="item"/> from the specified
            <paramref name="list"/> and adds it back at the specified <paramref name="offset"/> from
            its original index position.
            </para><para>
            The <paramref name="item"/> is placed at the beginning or at the end of the <paramref name="list"/> if the new position would be less than zero or higher than the last
            position, respectively. The items in-between are shifted up or down accordingly.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.ProcessKey``2(System.Collections.Generic.IDictionary{``0,``1},``0,``0)">
            <overloads>
            Counts, changes, or deletes all occurrences of the specified key.</overloads>
            <summary>
            Counts, changes, or deletes the element with the specified key in an <see cref="T:System.Collections.Generic.IDictionary`2"/> collection.</summary>
            <typeparam name="TKey">
            The type of all keys in the collection.</typeparam>
            <typeparam name="TValue">
            The type of all values in the collection.</typeparam>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> collection whose elements to process.
            </param>
            <param name="oldKey">
            The key to count, change, or delete in <paramref name="dictionary"/>.</param>
            <param name="newKey"><para>
            The same value as <paramref name="oldKey"/> to count the occurrences of <paramref name="oldKey"/>.
            </para><para>-or-</para><para>
            A different value than <paramref name="oldKey"/> to change any occurrences of <paramref name="oldKey"/> to <paramref name="newKey"/>. 
            </para><para>-or-</para><para>
            A null reference to delete the element with <paramref name="oldKey"/>.</para></param>
            <returns>
            One if <paramref name="oldKey"/> was found in <paramref name="dictionary"/>; otherwise,
            zero.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="dictionary"/> or <paramref name="oldKey"/> is a null reference.
            </exception>
            <remarks>
            <b>ProcessKey</b> passes its arguments to <see cref="M:Tektosyne.Collections.CollectionsUtility.CountKey``2(System.Collections.Generic.IDictionary{``0,``1},``0)"/> and then to <see cref="M:Tektosyne.Collections.CollectionsUtility.ChangeKey``2(System.Collections.Generic.IDictionary{``0,``1},``0,``0)"/>, or <see cref="M:Tektosyne.Collections.CollectionsUtility.DeleteKey``2(System.Collections.Generic.IDictionary{``0,``1},``0)"/>, depending on the value of the specified
            <paramref name="newKey"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.ProcessKey``2(System.Collections.Generic.IList{System.Collections.Generic.KeyValuePair{``0,``1}},``0,``0)">
            <summary>
            Counts, changes, or deletes all occurrences of the specified key in an <see cref="T:System.Collections.Generic.IList`1"/> collection.</summary>
            <typeparam name="TKey">
            The type of all keys in the collection.</typeparam>
            <typeparam name="TValue">
            The type of all values in the collection.</typeparam>
            <param name="list">
            An <see cref="T:System.Collections.Generic.IList`1"/> collection containing the <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements to process.</param>
            <param name="oldKey">
            The key to count, change, or delete in <paramref name="list"/>.</param>
            <param name="newKey"><para>
            The same value as <paramref name="oldKey"/> to count the occurrences of <paramref name="oldKey"/>.
            </para><para>-or-</para><para>
            A different value than <paramref name="oldKey"/> to change all occurrences of <paramref name="oldKey"/> to <paramref name="newKey"/>. 
            </para><para>-or-</para><para>
            A null reference to delete all elements with <paramref name="oldKey"/>.</para></param>
            <returns>
            The number of occurrences of <paramref name="oldKey"/> in <paramref name="list"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> or <paramref name="oldKey"/> is a null reference.</exception>
            <remarks>
            <b>ProcessKey</b> passes its arguments to <see cref="M:Tektosyne.Collections.CollectionsUtility.CountKey``2(System.Collections.Generic.IDictionary{``0,``1},``0)"/> and then to <see cref="M:Tektosyne.Collections.CollectionsUtility.ChangeKey``2(System.Collections.Generic.IDictionary{``0,``1},``0,``0)"/>, or <see cref="M:Tektosyne.Collections.CollectionsUtility.DeleteKey``2(System.Collections.Generic.IDictionary{``0,``1},``0)"/>, depending on the value of the specified
            <paramref name="newKey"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.ProcessKey``2(System.Collections.Generic.KeyValuePair{``0,``1}@,``0,``0)">
            <summary>
            Counts, changes, or deletes the the specified key of a <see cref="T:System.Collections.Generic.KeyValuePair`2"/>.</summary>
            <typeparam name="TKey">
            The type of all keys in the collection.</typeparam>
            <typeparam name="TValue">
            The type of all values in the collection.</typeparam>
            <param name="pair">
            The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> instance to process.</param>
            <param name="oldKey">
            The key to count, change, or delete in <paramref name="pair"/>.</param>
            <param name="newKey"><para>
            The same value as <paramref name="oldKey"/> to count the occurrence of <paramref name="oldKey"/>.
            </para><para>-or-</para><para>
            A different value than <paramref name="oldKey"/> to change <paramref name="oldKey"/> to
            <paramref name="newKey"/>. 
            </para><para>-or-</para><para>
            A null reference to delete <paramref name="oldKey"/> and its value.</para></param>
            <returns>
            One if <paramref name="pair"/> contains <paramref name="oldKey"/>; otherwise, zero.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="oldKey"/> is a null reference.</exception>
            <remarks>
            <b>ProcessKey</b> replaces the specified <paramref name="pair"/> with a
            default-initialized <see cref="T:System.Collections.Generic.KeyValuePair`2"/> instance if its <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> equals <paramref name="oldKey"/> and the
            specified <paramref name="newKey"/> is a null reference.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.Restrict``1(System.Collections.Generic.IList{``0},System.Collections.Generic.IList{``0})">
            <summary>
            Restricts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection to those elements that are
            also present in another collection.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection to restrict.</param>
            <param name="restriction">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection by which to restrict the specified <paramref name="list"/>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> or <paramref name="restriction"/> is a null reference.
            </exception>
            <remarks>
            <b>Restrict</b> removes all elements from the specified <paramref name="list"/> that are
            not also present in the specified <paramref name="restriction"/> collection.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.SequenceEqual``1(System.Collections.Generic.ICollection{``0},System.Collections.Generic.ICollection{``0})">
            <overloads>
            Determines whether two specified generic collections contain the same elements in the
            same order.</overloads>
            <summary>
            Determines whether two specified generic <see cref="T:System.Collections.Generic.ICollection`1"/> collections
            contain the same elements in the same order.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="firstCollection">
            The first <see cref="T:System.Collections.Generic.ICollection`1"/> collection to compare.</param>
            <param name="secondCollection">
            The second <see cref="T:System.Collections.Generic.ICollection`1"/> collection to compare.</param>
            <returns><para>
            <c>true</c> under the following conditions, otherwise <c>false</c>:
            </para><list type="bullet"><item>
            <paramref name="firstCollection"/> and <paramref name="secondCollection"/> are both null
            references.
            </item><item>
            <paramref name="firstCollection"/> and <paramref name="secondCollection"/> are both
            references to the same valid collection.
            </item><item>
            <paramref name="firstCollection"/> and <paramref name="secondCollection"/> are both
            valid collections that contain the same number of elements, and all elements compare as
            equal when retrieved in the enumeration sequence for each collection.
            </item></list></returns>
            <remarks><para>
            <b>SequenceEqual</b> first checks the two specified collections for reference equality,
            then for a different element <see cref="P:System.Collections.Generic.ICollection`1.Count"/>; and only then invokes
            <see cref="M:System.Object.Equals(System.Object)"/> on all elements of <paramref name="firstCollection"/> until
            a difference is found, or the collection is exhausted.
            </para><para>
            Elements are compared by obtaining an <see cref="T:System.Collections.Generic.IEnumerator`1"/> for each collection. 
            Both enumerators are disposed of before <b>SequenceEqual</b> returns.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.SequenceEqual``1(System.Collections.Generic.IList{``0},System.Collections.Generic.IList{``0})">
            <summary>
            Determines whether two specified generic <see cref="T:System.Collections.Generic.IList`1"/> collections contain the
            same elements in the same order.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="firstList">
            The first <see cref="T:System.Collections.Generic.IList`1"/> collection to compare.</param>
            <param name="secondList">
            The second <see cref="T:System.Collections.Generic.IList`1"/> collection to compare.</param>
            <returns><para>
            <c>true</c> under the following conditions, otherwise <c>false</c>:
            </para><list type="bullet"><item>
            <paramref name="firstList"/> and <paramref name="secondList"/> are both null references.
            </item><item>
            <paramref name="firstList"/> and <paramref name="secondList"/> are both references to
            the same valid collection.
            </item><item>
            <paramref name="firstList"/> and <paramref name="secondList"/> are both valid
            collections that contain the same number of elements, and all elements at the same index
            position in each collection compare as equal.</item></list></returns>
            <remarks><para>
            <b>SequenceEqual</b> first checks the two specified collections for reference equality,
            then for a different element <see cref="P:System.Collections.Generic.ICollection`1.Count"/>; and only then invokes
            <see cref="M:System.Object.Equals(System.Object)"/> on all elements of <paramref name="firstList"/> until a
            difference is found, or the collection is exhausted.
            </para><para>
            Elements are compared by retrieiving the element at the same index position in each
            collection. No enumerators are created.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.SequenceEqualUntyped(System.Collections.ICollection,System.Collections.ICollection)">
            <overloads>
            Determines whether two specified non-generic collections contain the same elements in
            the same order.</overloads>
            <summary>
            Determines whether two specified non-generic <see cref="T:System.Collections.ICollection"/> collections
            contain the same elements in the same order.</summary>
            <param name="firstCollection">
            The first <see cref="T:System.Collections.ICollection"/> collection to compare.</param>
            <param name="secondCollection">
            The second <see cref="T:System.Collections.ICollection"/> collection to compare.</param>
            <returns><para>
            <c>true</c> under the following conditions, otherwise <c>false</c>:
            </para><list type="bullet"><item>
            <paramref name="firstCollection"/> and <paramref name="secondCollection"/> are both null
            references.
            </item><item>
            <paramref name="firstCollection"/> and <paramref name="secondCollection"/> are both
            references to the same valid collection.
            </item><item>
            <paramref name="firstCollection"/> and <paramref name="secondCollection"/> are both
            valid collections that contain the same number of elements, and all elements compare as
            equal when retrieved in the enumeration sequence for each collection.
            </item></list></returns>
            <remarks><para>
            <b>SequenceEqualUntyped</b> first checks the two specified collections for reference
            equality, then for a different element <see cref="P:System.Collections.ICollection.Count"/>; and only then
            invokes <see cref="M:System.Object.Equals(System.Object)"/> on all elements of <paramref name="firstCollection"/> until a difference is found, or the collection is exhausted.
            </para><para>
            Elements are compared by obtaining an <see cref="T:System.Collections.IEnumerator"/> for each collection. Any
            enumerators that implement <see cref="T:System.IDisposable"/> are disposed of before
            <b>SequenceEqualUntyped</b> returns.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.SequenceEqualUntyped(System.Collections.IList,System.Collections.IList)">
            <summary>
            Determines whether two specified non-generic <see cref="T:System.Collections.IList"/> collections contain the
            same elements in the same order.</summary>
            <param name="firstList">
            The first <see cref="T:System.Collections.IList"/> collection to compare.</param>
            <param name="secondList">
            The second <see cref="T:System.Collections.IList"/> collection to compare.</param>
            <returns><para>
            <c>true</c> under the following conditions, otherwise <c>false</c>:
            </para><list type="bullet"><item>
            <paramref name="firstList"/> and <paramref name="secondList"/> are both null references.
            </item><item>
            <paramref name="firstList"/> and <paramref name="secondList"/> are both references to
            the same valid collection.
            </item><item>
            <paramref name="firstList"/> and <paramref name="secondList"/> are both valid
            collections that contain the same number of elements, and all elements at the same index
            position in each collection compare as equal.</item></list></returns>
            <remarks><para>
            <b>SequenceEqualUntyped</b> first checks the two specified collections for reference
            equality, then for a different element <see cref="P:System.Collections.ICollection.Count"/>; and only then
            invokes <see cref="M:System.Object.Equals(System.Object)"/> on all elements of <paramref name="firstList"/>
            until a difference is found, or the collection is exhausted.
            </para><para>
            Elements are compared by retrieiving the element at the same index position in each
            collection. No enumerators are created.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.Swap``1(System.Collections.Generic.IList{``0},System.Int32,System.Int32)">
            <summary>
            Swaps two elements in the specified <see cref="T:System.Collections.Generic.IList`1"/> collection.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection whose elements to swap.</param>
            <param name="first">
            The zero-based index of the first element to swap.</param>
            <param name="second">
            The zero-based index of the second element to swap.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="first"/> or <paramref name="second"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="first"/> or <paramref name="second"/> is equal to or greater than the
            <see cref="P:System.Collections.Generic.ICollection`1.Count"/> of the specified <paramref name="list"/>.
            </para></exception>
            <remarks>
            <b>Swap</b> exchanges the elements at the <paramref name="first"/> and <paramref name="second"/> indices within the specified <paramref name="list"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.CollectionsUtility.ValidateKey``2(``0,``1)">
            <summary>
            Validates the specified key and the embedded key, if any, of the specified value.
            </summary>
            <typeparam name="TKey">
            The type of the key.</typeparam>
            <typeparam name="TValue">
            The type of the value.</typeparam>
            <param name="key">
            The <typeparamref name="TKey"/> key to validate.</param>
            <param name="value">
            The <typeparamref name="TValue"/> value to validate.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from <paramref name="key"/>.</exception>
            <remarks>
            <b>ValidateKey</b> is called by the generic dictionary classes in the 
            <b>Tektosyne.Collections</b> namespace to ensure that dictionary keys are stored with
            identical <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> keys only.</remarks>
        </member>
        <member name="T:Tektosyne.Collections.StackEx`1">
            <summary>
            Provides a generic last-in, first-out (LIFO) collection of items.</summary>
            <typeparam name="T">
            The type of all items in the stack. If <typeparamref name="T"/> is a reference type, items
            may be null references.</typeparam>
            <remarks><para>
            <b>StackEx</b> is identical with the standard class <see cref="T:System.Collections.Generic.Stack`1"/> from which it
            derives, except for a few extra features:
            </para><list type="bullet"><item>
            <see cref="P:Tektosyne.Collections.StackEx`1.IsSynchronized"/> and <see cref="P:Tektosyne.Collections.StackEx`1.SyncRoot"/> are available
            as public properties, rather than explicit <see cref="T:System.Collections.ICollection"/> implementations.
            </item><item>
            <see cref="M:Tektosyne.Collections.StackEx`1.Clone"/> creates a shallow copy of the stack, using the <see cref="M:Tektosyne.Collections.StackEx`1.#ctor(System.Collections.Generic.IEnumerable{`0})"/> constructor that takes a collection argument.
            </item><item>
            <see cref="M:Tektosyne.Collections.StackEx`1.Copy"/> creates a deep copy of the stack by invoking <see cref="M:System.ICloneable.Clone"/> on each <typeparamref name="T"/> element. This feature requires
            that all copied elements implement the <see cref="T:System.ICloneable"/> interface.
            </item><item>
            <see cref="M:Tektosyne.Collections.StackEx`1.Equals(System.Collections.ICollection)"/> and <see cref="M:Tektosyne.Collections.StackEx`1.EqualsReverse(System.Collections.ICollection)"/> compare two
            collections with identical element types for value equality of all elements. The collections
            compare as equal if they contain the same elements in the same or in reverse order, 
            respectively.</item></list></remarks>
        </member>
        <member name="M:Tektosyne.Collections.StackEx`1.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.StackEx`1"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.StackEx`1"/> class that is empty and has
            the default initial capacity.</summary>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Stack`1.#ctor"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.StackEx`1.#ctor(System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.StackEx`1"/> class that contains elements
            copied from the specified collection and has sufficient capacity to accommodate the
            number of elements copied.</summary>
            <param name="collection">
            The <see cref="T:System.Collections.Generic.IEnumerable`1"/> collection whose elements are copied to the new
            collection.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="collection"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Stack`1.#ctor(System.Collections.Generic.IEnumerable{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.StackEx`1.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.StackEx`1"/> class that is empty and has
            the specified initial capacity.</summary>
            <param name="capacity">
            The initial number of elements that the new <see cref="T:Tektosyne.Collections.StackEx`1"/> can contain.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="capacity"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Stack`1.#ctor(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.StackEx`1.Clone">
            <summary>
            Creates a shallow copy of the <see cref="T:Tektosyne.Collections.StackEx`1"/>.</summary>
            <returns>
            A shallow copy of the <see cref="T:Tektosyne.Collections.StackEx`1"/>.</returns>
        </member>
        <member name="M:Tektosyne.Collections.StackEx`1.Copy">
            <summary>
            Creates a deep copy of the <see cref="T:Tektosyne.Collections.StackEx`1"/>.</summary>
            <returns>
            A deep copy of the <see cref="T:Tektosyne.Collections.StackEx`1"/>.</returns>
            <exception cref="T:System.InvalidCastException">
            <typeparamref name="T"/> does not implement <see cref="T:System.ICloneable"/>.</exception>
            <remarks>
            <b>Copy</b> is similar to <see cref="M:Tektosyne.Collections.StackEx`1.Clone"/> but creates a deep copy the <see cref="T:Tektosyne.Collections.StackEx`1"/> by invoking <see cref="M:System.ICloneable.Clone"/> on all <typeparamref name="T"/> elements.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.StackEx`1.Equals(System.Collections.ICollection)">
            <summary>
            Determines whether the specified collection contains the same elements in the same order
            as the current <see cref="T:Tektosyne.Collections.StackEx`1"/>.</summary>
            <param name="collection">
            The <see cref="T:System.Collections.ICollection"/> to compare with the current <see cref="T:Tektosyne.Collections.StackEx`1"/>.
            </param>
            <returns><para>
            <c>true</c> under the following conditions, otherwise <c>false</c>:
            </para><list type="bullet"><item>
            <paramref name="collection"/> is another reference to this <see cref="T:Tektosyne.Collections.StackEx`1"/>.
            </item><item>
            <paramref name="collection"/> is not a null reference, contains the same number of
            elements as this <see cref="T:Tektosyne.Collections.StackEx`1"/>, and all elements compare as equal when
            retrieved in the enumeration sequence for each collection.</item></list></returns>
            <remarks><para>
            <b>Equals</b> calls <see cref="M:Tektosyne.Collections.CollectionsUtility.SequenceEqualUntyped(System.Collections.ICollection,System.Collections.ICollection)"/> to test the
            two collections for value equality.
            </para><note type="implementnotes">
            <para>The <see cref="T:Tektosyne.Collections.StackEx`1"/> is a last-in, first-out (LIFO) collection, which
            means that its enumeration sequence is reversed compared to a first-in, first-out (FIFO)
            collection that contains the same elements in the same original insertion order.
            </para><para>
            When comparing to a non-LIFO collection, you must first reverse its element order, or
            that of the <see cref="T:Tektosyne.Collections.StackEx`1"/>, for a successful comparison. Use the alternative
            method <see cref="M:Tektosyne.Collections.StackEx`1.EqualsReverse(System.Collections.ICollection)"/> to automatically perform this inversion.
            </para></note></remarks>
        </member>
        <member name="M:Tektosyne.Collections.StackEx`1.EqualsReverse(System.Collections.ICollection)">
            <summary>
            Determines whether the specified collection contains the same elements in the reverse
            order as the current <see cref="T:Tektosyne.Collections.StackEx`1"/>.</summary>
            <param name="collection">
            The <see cref="T:System.Collections.ICollection"/> to compare with the current <see cref="T:Tektosyne.Collections.StackEx`1"/>.
            </param>
            <returns><para>
            <c>true</c> under the following conditions, otherwise <c>false</c>:
            </para><list type="bullet"><item>
            <paramref name="collection"/> is not a null reference, contains the same number of
            elements as this <see cref="T:Tektosyne.Collections.StackEx`1"/>, and all elements compare as equal when
            retrieved in the original enumeration sequence for the <paramref name="collection"/>,
            and in the reverse enumeration sequence for this <see cref="T:Tektosyne.Collections.StackEx`1"/>.
            </item></list></returns>
            <remarks><para>
            <b>Equals</b> calls <see cref="M:Tektosyne.Collections.CollectionsUtility.SequenceEqualUntyped(System.Collections.ICollection,System.Collections.ICollection)"/> to test the
            two collections for value equality.
            </para><note type="implementnotes">
            <para>The <see cref="T:Tektosyne.Collections.StackEx`1"/> is a last-in, first-out (LIFO) collection, which
            means that its enumeration sequence is reversed compared to a first-in, first-out (FIFO)
            collection that contains the same elements in the same original insertion order.
            </para><para>
            When comparing to a non-LIFO collection, you must first reverse its element order, or
            that of the <see cref="T:Tektosyne.Collections.StackEx`1"/>, for a successful comparison. <b>EqualsReverse</b>
            automatically performs this inversion. Use the alternative method <see cref="M:Tektosyne.Collections.StackEx`1.Equals(System.Collections.ICollection)"/>
            when comparing to another LIFO collection.</para></note></remarks>
        </member>
        <member name="P:Tektosyne.Collections.StackEx`1.IsSynchronized">
            <summary>
            Gets a value indicating whether access to the <see cref="T:Tektosyne.Collections.StackEx`1"/> is synchronized
            (thread-safe).</summary>
            <value>
            <c>true</c> if access to the <see cref="T:Tektosyne.Collections.StackEx`1"/> is synchronized (thread-safe);
            otherwise, <c>false</c>. The default is <c>false</c>.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.Stack.IsSynchronized"/> for details.
            </para><para>
            This property is provided for backwards compatibility only, as none of the
            <b>Tektosyne.Collections</b> classes support synchronized wrappers.</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.StackEx`1.SyncRoot">
            <summary>
            Gets an object that can be used to synchronize access to the <see cref="T:Tektosyne.Collections.StackEx`1"/>.
            </summary>
            <value>
            An object that can be used to synchronize access to the <see cref="T:Tektosyne.Collections.StackEx`1"/>.
            </value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.Stack.SyncRoot"/> for details.
            </para><para>
            When synchronizing multi-threaded access to the <see cref="T:Tektosyne.Collections.StackEx`1"/>, obtain a lock
            on the <b>SyncRoot</b> object rather than the collection itself.</para></remarks>
        </member>
        <member name="T:Tektosyne.Collections.SortedListEx`2">
            <summary>
            Provides a generic collection of keys and values that are sorted and accessible by key.
            </summary>
            <typeparam name="TKey">
            The type of all keys in the collection. Keys cannot be null references.</typeparam>
            <typeparam name="TValue">
            The type of all values that are associated with the keys. If <typeparamref name="TValue"/>
            is a reference type, values may be null references.</typeparam>
            <remarks><para>
            <b>SortedListEx</b> provides a <see cref="T:System.Collections.Generic.SortedList`2"/> with a few extra
            features:
            </para><list type="bullet"><item>
            The <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> property of any <typeparamref name="TValue"/> that
            implements the <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> interface is automatically checked against
            the associated dictionary key when a key or value is changed or inserted.
            </item><item>
            <see cref="M:Tektosyne.Collections.SortedListEx`2.AsReadOnly"/> returns a read-only wrapper that has the
            same public type as the original collection. Attempting to modify the collection through
            such a read-only view will raise a <see cref="T:System.NotSupportedException"/>.
            </item><item>
            <see cref="M:Tektosyne.Collections.SortedListEx`2.Copy"/> creates a deep copy of the collection by
            invoking <see cref="M:System.ICloneable.Clone"/> on each value. This feature requires that all copied
            values implement the <see cref="T:System.ICloneable"/> interface.
            </item><item>
            <see cref="F:Tektosyne.Collections.SortedListEx`2.Empty"/> returns an immutable empty collection that is
            cached for repeated access.
            </item><item>
            <see cref="M:Tektosyne.Collections.SortedListEx`2.Equals(System.Collections.Generic.ICollection{System.Collections.Generic.KeyValuePair{`0,`1}})"/> compares two collections with identical
            element types for value equality of all elements. The collections compare as equal if they
            contain the same elements in the same order.
            </item><item>
            <see cref="M:Tektosyne.Collections.SortedListEx`2.GetByIndex(System.Int32)"/>, <see cref="M:Tektosyne.Collections.SortedListEx`2.GetKey(System.Int32)"/>, and <see cref="M:Tektosyne.Collections.SortedListEx`2.SetByIndex(System.Int32,`1)"/> are adopted from
            the non-generic <see cref="T:System.Collections.SortedList"/> class.
            </item></list><para>
            Moreover, several properties and methods that the standard class provides as explicit
            interface implementations have been elevated to public visibility.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> class.
            </overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> class that is
            empty, has the default initial capacity, and uses the default comparer for <typeparamref name="TKey"/>.</summary>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.#ctor"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.#ctor(System.Collections.Generic.IComparer{`0})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> class that is
            empty, has the default initial capacity, and uses the specified comparer for
            <typeparamref name="TKey"/>.</summary>
            <param name="comparer">
            The <see cref="T:System.Collections.Generic.IComparer`1"/> to use when comparing keys, or a null reference to use
            the default <see cref="T:System.Collections.Generic.Comparer`1"/> for <typeparamref name="TKey"/>.</param>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.#ctor(System.Collections.Generic.IComparer{`0})"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.#ctor(System.Collections.Generic.IDictionary{`0,`1})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> class that
            contains elements copied from the specified collection and uses the default comparer for
            <typeparamref name="TKey"/>.</summary>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> whose elements are copied to the new
            collection.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="dictionary"/> contains one or more duplicate keys.</exception>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="dictionary"/> is a null reference.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> is a null reference. </para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.#ctor(System.Collections.Generic.IDictionary{`0,`1})"/> for
            details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.#ctor(System.Collections.Generic.IDictionary{`0,`1},System.Collections.Generic.IComparer{`0})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> class that
            contains elements copied from the specified collection and uses the specified comparer
            for <typeparamref name="TKey"/>.</summary>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> whose elements are copied to the new
            collection.</param>
            <param name="comparer">
            The <see cref="T:System.Collections.Generic.IComparer`1"/> to use when comparing keys, or a null reference to use
            the default <see cref="T:System.Collections.Generic.Comparer`1"/> for <typeparamref name="TKey"/>.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="dictionary"/> contains one or more duplicate keys.</exception>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="dictionary"/> is a null reference.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> is a null reference. </para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.#ctor(System.Collections.Generic.IDictionary{`0,`1},System.Collections.Generic.IComparer{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> class that is
            empty, has the specified initial capacity, and uses the default comparer for
            <typeparamref name="TKey"/>.</summary>
            <param name="capacity">
            The number of elements that the new <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is
            initially capable of storing.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="capacity"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.#ctor(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.#ctor(System.Int32,System.Collections.Generic.IComparer{`0})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> class that is
            empty, has the specified initial capacity, and uses the specified comparer for
            <typeparamref name="TKey"/>.</summary>
            <param name="capacity">
            The number of elements that the new <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is
            initially capable of storing.</param>
            <param name="comparer">
            The <see cref="T:System.Collections.Generic.IComparer`1"/> to use when comparing keys, or a null reference to use
            the default <see cref="T:System.Collections.Generic.Comparer`1"/> for <typeparamref name="TKey"/>.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="capacity"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.#ctor(System.Int32,System.Collections.Generic.IComparer{`0})"/> for
            details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.#ctor(Tektosyne.Collections.SortedListEx{`0,`1},System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> class that is
            a read-only view of the specified instance.</summary>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.SortedList`2"/> collection that provides the initial value
            for the <see cref="F:Tektosyne.Collections.SortedListEx`2.InnerDictionary"/> field.</param>
            <param name="readOnly">
            The initial value for the <see cref="F:Tektosyne.Collections.SortedListEx`2.ReadOnlyFlag"/> field. This argument must be
            <c>true</c>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="dictionary"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="readOnly"/> is <c>false</c>.</exception>
            <remarks>
            This constructor is used to create a read-only wrapper around an existing collection.
            The new instance shares the data of the specified <paramref name="dictionary"/>.
            </remarks>
        </member>
        <member name="F:Tektosyne.Collections.SortedListEx`2.InnerDictionary">
            <summary>
            The <see cref="T:System.Collections.Generic.SortedList`2"/> collection that holds the <typeparamref name="TKey"/> keys and <typeparamref name="TValue"/> values of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
        </member>
        <member name="F:Tektosyne.Collections.SortedListEx`2.ReadOnlyFlag">
            <summary>
            Backs the <see cref="P:Tektosyne.Collections.SortedListEx`2.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.SortedListEx`2.IsReadOnly"/> properties.</summary>
        </member>
        <member name="F:Tektosyne.Collections.SortedListEx`2.ReadOnlyWrapper">
            <summary>
            The read-only <see cref="T:Tektosyne.Collections.SortedListEx`2"/> collection that is returned by
            the <see cref="M:Tektosyne.Collections.SortedListEx`2.AsReadOnly"/> method.</summary>
        </member>
        <member name="F:Tektosyne.Collections.SortedListEx`2.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <remarks>
            Attempting to modify the <b>Empty</b> collection will raise a <see cref="T:System.NotSupportedException"/>. The collection has zero capacity and is guaranteed to
            never change, as there are no writable references to the collection.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.CheckDictionary(System.Collections.Generic.IDictionary{`0,`1})">
            <summary>
            Checks that the specified <see cref="T:System.Collections.Generic.IDictionary`2"/> is valid.</summary>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> to check.</param>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="dictionary"/> is a null reference.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> is a null reference. </para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/>.</exception>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.CheckWritable">
            <summary>
            Checks that the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> can be modified.</summary>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.</exception>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.Add(`0,`1)">
            <overloads>
            Adds the specified element to the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</overloads>
            <summary>
            Adds the specified key and value to the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            </summary>
            <param name="key">
            The key of the element to add.</param>
            <param name="value">
            The value of the element to add.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="key"/> already exists in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from <paramref name="key"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.Add(`0,`1)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.System#Collections#IDictionary#Add(System.Object,System.Object)">
            <summary>
            Adds the specified key and value to the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            </summary>
            <param name="key">
            The key of the element to add. This argument must be compatible with <typeparamref name="TKey"/>.</param>
            <param name="value">
            The value of the element to add. This argument must be compatible with <typeparamref name="TValue"/>.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="key"/> already exists in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.InvalidCastException"><para>
            <paramref name="key"/> is not compatible with <typeparamref name="TKey"/>.
            </para><para>-or-</para><para>
            <paramref name="value"/> is not compatible with <typeparamref name="TValue"/>.
            </para></exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.</exception>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.Add(System.Collections.Generic.KeyValuePair{`0,`1})">
            <summary>
            Adds the specified key-and-value pair to the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            </summary>
            <param name="pair">
            The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> element to add.</param>
            <exception cref="T:System.ArgumentException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component of <paramref name="pair"/>
            already exists in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</exception>
            <exception cref="T:System.ArgumentNullException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component of <paramref name="pair"/> is
            a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> component of <paramref name="pair"/>
            is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/>
            differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component.
            </exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.ICollection`1.Add(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.AddRange(System.Collections.Generic.IDictionary{`0,`1})">
            <summary>
            Adds the elements of the specified collection to the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>. </summary>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> whose elements to add.</param>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="dictionary"/> is a null reference.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> is a null reference. </para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/>.</exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.SortedListEx`2"/> already contains one or more keys in the
            specified <paramref name="dictionary"/>.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains one or more duplicate keys.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.AddRange(System.Collections.Generic.IEnumerable{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.AsReadOnly">
            <summary>
            Returns a read-only view of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <returns>
            A read-only wrapper around the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</returns>
            <remarks><para>
            Attempting to modify the read-only wrapper returned by <b>AsReadOnly</b> will raise a
            <see cref="T:System.NotSupportedException"/>. Note that the original collection may still change,
            and any such changes will be reflected in the read-only view.
            </para><para>
            <b>AsReadOnly</b> buffers the newly created read-only wrapper when the method is first
            called, and returns the buffered value on subsequent calls.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.Clear">
            <summary>
            Removes all elements from the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.Clear"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.Clone">
            <summary>
            Creates a shallow copy of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <returns>
            A shallow copy of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</returns>
            <remarks>
            <b>Clone</b> does not preserve the values of the <see cref="P:Tektosyne.Collections.SortedListEx`2.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.SortedListEx`2.IsReadOnly"/> properties.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.Contains(System.Collections.Generic.KeyValuePair{`0,`1})">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> contains the specified
            key-and-value pair.</summary>
            <param name="pair">
            The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> element to locate.</param>
            <returns>
            <c>true</c> if <paramref name="pair"/> is found in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.ICollection`1.Contains(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.ContainsKey(`0)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> contains the specified
            key.</summary>
            <param name="key">
            The key to locate.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> contains an element with the
            specified <paramref name="key"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.ContainsKey(`0)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.System#Collections#IDictionary#Contains(System.Object)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> contains the specified
            key.</summary>
            <param name="key">
            The key to locate. This argument must be compatible with <typeparamref name="TKey"/>.
            </param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> contains an element with the
            specified <paramref name="key"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.InvalidCastException">
            <paramref name="key"/> is not compatible with <typeparamref name="TKey"/>.</exception>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.ContainsValue(`1)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> contains the specified
            value.</summary>
            <param name="value">
            The value to locate.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> contains an element with the
            specified <paramref name="value"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.ContainsValue(`1)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.Copy">
            <summary>
            Creates a deep copy of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <returns>
            A deep copy of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</returns>
            <exception cref="T:System.InvalidCastException">
            <typeparamref name="T"/> does not implement <see cref="T:System.ICloneable"/>.</exception>
            <remarks><para>
            <b>Copy</b> is similar to <see cref="M:Tektosyne.Collections.SortedListEx`2.Clone"/> but creates a deep copy the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> by invoking <see cref="M:System.ICloneable.Clone"/> on all 
            <typeparamref name="TValue"/> values. The <typeparamref name="TKey"/> keys are always
            duplicated by a shallow copy.
            </para><para>
            <b>Copy</b> does not preserve the values of the <see cref="P:Tektosyne.Collections.SortedListEx`2.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.SortedListEx`2.IsReadOnly"/> properties.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32)">
            <summary>
            Copies the entire <see cref="T:Tektosyne.Collections.SortedListEx`2"/> to a one-dimensional <see cref="T:System.Array"/>, starting at the specified index of the target array.</summary>
            <param name="array">
            The one-dimensional <see cref="T:System.Array"/> that is the destination of the <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements copied from the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>. The <b>Array</b> must have zero-based indexing.
            </param>
            <param name="arrayIndex">
            The zero-based index in <paramref name="array"/> at which copying begins.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="array"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="arrayIndex"/> is less than zero.</exception>
            <exception cref="T:System.ArgumentException"><para>
            <paramref name="arrayIndex"/> is equal to or greater than the length of <paramref name="array"/>.
            </para><para>-or-</para><para>
            The number of elements in the source <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is greater
            than the available space from <paramref name="arrayIndex"/> to the end of the
            destination <paramref name="array"/>.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.ICollection`1.CopyTo(`0[],System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.System#Collections#ICollection#CopyTo(System.Array,System.Int32)">
            <summary>
            Copies the entire <see cref="T:Tektosyne.Collections.SortedListEx`2"/> to a one-dimensional <see cref="T:System.Array"/>, starting at the specified index of the target array.</summary>
            <param name="array">
            The one-dimensional <see cref="T:System.Array"/> that is the destination of the <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements copied from the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>. The <b>Array</b> must have zero-based indexing.
            </param>
            <param name="arrayIndex">
            The zero-based index in <paramref name="array"/> at which copying begins.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="array"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="arrayIndex"/> is less than zero.</exception>
            <exception cref="T:System.ArgumentException"><para>
            <paramref name="array"/> is multidimensional.
            </para><para>-or-</para><para>
            <paramref name="arrayIndex"/> is equal to or greater than the length of <paramref name="array"/>.
            </para><para>-or-</para><para>
            The number of elements in the source <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is greater
            than the available space from <paramref name="arrayIndex"/> to the end of the
            destination <paramref name="array"/>.</para></exception>
            <exception cref="T:System.InvalidCastException">
            <see cref="T:System.Collections.Generic.KeyValuePair`2"/> cannot be cast automatically to the type of the
            destination <paramref name="array"/>.</exception>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.Equals(System.Collections.Generic.ICollection{System.Collections.Generic.KeyValuePair{`0,`1}})">
            <summary>
            Determines whether the specified collection contains the same key-and-value pairs in the
            same order as the current <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <param name="collection">
            The <see cref="T:System.Collections.Generic.ICollection`1"/> of <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements to
            compare with the current <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</param>
            <returns><para>
            <c>true</c> under the following conditions, otherwise <c>false</c>:
            </para><list type="bullet"><item>
            <paramref name="collection"/> is another reference to this <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            </item><item>
            <paramref name="collection"/> is not a null reference, contains the same number of
            elements as this <see cref="T:Tektosyne.Collections.SortedListEx`2"/>, and all elements compare as
            equal when retrieved in the enumeration sequence for each collection.
            </item></list></returns>
            <remarks>
            <b>Equals</b> calls <see cref="M:Tektosyne.Collections.CollectionsUtility.SequenceEqual``1(System.Collections.Generic.ICollection{``0},System.Collections.Generic.ICollection{``0})"/> to test the two
            collections for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.GetByIndex(System.Int32)">
            <summary>
            Gets the value at the specified index.</summary>
            <param name="index">
            The zero-based index of the value to get.</param>
            <returns>
            The value at the specified <paramref name="index"/> in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.SortedListEx`2.Count"/>.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.SortedList.GetByIndex(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can iterate through the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <returns>
            An <see cref="T:System.Collections.Generic.IEnumerator`1"/> for the entire <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            Each enumerated item is a <see cref="T:System.Collections.Generic.KeyValuePair`2"/>.</returns>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.System#Collections#IDictionary#GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.IDictionaryEnumerator"/> that can iterate through the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <returns>
            An <see cref="T:System.Collections.IDictionaryEnumerator"/> for the entire <see cref="T:Tektosyne.Collections.SortedListEx`2"/>. Each enumerated item is a <see cref="T:System.Collections.Generic.KeyValuePair`2"/>.
            </returns>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.IEnumerator"/> that can iterate through the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> for the entire <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            Each enumerated item is a <see cref="T:System.Collections.Generic.KeyValuePair`2"/>.</returns>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.GetKey(System.Int32)">
            <summary>
            Gets the key at the specified index.</summary>
            <param name="index">
            The zero-based index of the key to get.</param>
            <returns>
            The key at the specified <paramref name="index"/> in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.SortedListEx`2.Count"/>.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.SortedList.GetKey(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.IndexOfKey(`0)">
            <summary>
            Returns the zero-based index of the first occurrence of the specified key.</summary>
            <param name="key">
            The key to locate.</param>
            <returns>
            The zero-based index of the first occurrence of <paramref name="key"/> in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>, if found; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.IndexOfKey(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.IndexOfValue(`1)">
            <summary>
            Returns the zero-based index of first occurrence of the specified value.</summary>
            <param name="value">
            The value to locate.</param>
            <returns>
            The zero-based index of the first occurrence of <paramref name="value"/> in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>, if found; otherwise, -1.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.IndexOfValue(`1)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.Remove(`0)">
            <overloads>
            Removes the specified element from the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            </overloads>
            <summary>
            Removes the element with the specified key from the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <param name="key">
            The key of the element to remove.</param>
            <returns>
            <c>true</c> if <paramref name="key"/> was found and the associated element was removed;
            otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.Remove(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.System#Collections#IDictionary#Remove(System.Object)">
            <summary>
            Removes the element with the specified key from the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <param name="key">
            The key of the element to remove. This argument must be compatible with <typeparamref name="TKey"/>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.InvalidCastException">
            <paramref name="key"/> is not compatible with <typeparamref name="TKey"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.</exception>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.Remove(System.Collections.Generic.KeyValuePair{`0,`1})">
            <summary>
            Removes the specified key-and-value pair from the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <param name="pair">
            The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> element to remove.</param>
            <returns>
            <c>true</c> if <paramref name="pair"/> was found and removed; otherwise, <c>false</c>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component of <paramref name="pair"/> is
            a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> component of <paramref name="pair"/>
            is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/>
            differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component.
            </exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.ICollection`1.Remove(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.RemoveAt(System.Int32)">
            <summary>
            Removes the element at the specified index in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <param name="index">
            The zero-based index of the element to remove.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.SortedListEx`2.Count"/>.
            </para></exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.RemoveAt(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.SetByIndex(System.Int32,`1)">
            <summary>
            Sets the value at the specified index.</summary>
            <param name="index">
            The zero-based index of the value to set.</param>
            <param name="value">
            The value to store at the specified <paramref name="index"/> in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.SortedListEx`2.Count"/>.</para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from the key at the specified <paramref name="index"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.</exception>
            <remarks><para>
            Please refer to <see cref="M:System.Collections.SortedList.SetByIndex(System.Int32,System.Object)"/> for details.
            </para><para>
            <b>SetByIndex</b> must perform two searches for the specified <paramref name="key"/>
            since the generic <see cref="T:System.Collections.Generic.SortedList`2"/> class does not provide direct
            write access by positional indexing. Unlike the non-generic equivalent, this method is
            therefore <em>less</em> efficient than using the key indexer.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.ToArray">
            <summary>
            Copies the key-and-value pairs of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> to a new
            <see cref="T:System.Array"/>.</summary>
            <returns>
            A one-dimensional <see cref="T:System.Array"/> containing copies of the <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</returns>
            <remarks>
            <b>ToArray</b> has the same effect as <see cref="M:Tektosyne.Collections.SortedListEx`2.CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32)"/> with a starting index of
            zero, but also allocates the target array.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.TrimExcess">
            <summary>
            Sets the capacity to the actual number of elements in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            </summary>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.TrimExcess"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedListEx`2.TryGetValue(`0,`1@)">
            <summary>
            Gets the value associated with the specified key.</summary>
            <param name="key">
            The key whose value to get.</param>
            <param name="value">
            The value associated with the first occurrence of <paramref name="key"/>, if found;
            otherwise, the default value for <typeparamref name="TValue"/>.</param>
            <returns>
            <c>true</c> if <paramref name="key"/> was found; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.TryGetValue(`0,`1@)"/> for details.
            </remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.Capacity">
            <summary>
            Gets or sets the capacity of the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <value>
            The number of elements that the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> can contain.
            </value>
            <exception cref="T:System.ArgumentOutOfRangeException">
            The property is set to a value that is less than <see cref="P:Tektosyne.Collections.SortedListEx`2.Count"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The property is set, and the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.
            </exception>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedList`2.Capacity"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.Comparer">
            <summary>
            Gets the <see cref="T:System.Collections.Generic.IComparer`1"/> that is used to determine the relative order of
            keys in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <value>
            The <see cref="T:System.Collections.Generic.IComparer`1"/> instance that is used to order keys.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedList`2.Comparer"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.Count">
            <summary>
            Gets the number of key-and-value pairs contained in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <value>
            The number of <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements contained in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedList`2.Count"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.IsFixedSize">
            <summary>
            Gets a value indicating whether the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> has a fixed
            size.</summary>
            <value>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> has a fixed size; otherwise,
            <c>false</c>. The default is <c>false</c>.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.IDictionary.IsFixedSize"/> for details.
            </para><para>
            This property always returns the same value as the <see cref="P:Tektosyne.Collections.SortedListEx`2.IsReadOnly"/> property,
            as none of the <b>Tektosyne.Collections</b> classes support writeable collections with
            a fixed size.</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.IsReadOnly">
            <summary>
            Gets a value indicating whether the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is
            read-only.</summary>
            <value>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only; otherwise,
            <c>false</c>. The default is <c>false</c>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.IDictionary.IsReadOnly"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.IsSynchronized">
            <summary>
            Gets a value indicating whether access to the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>
            is synchronized (thread-safe).</summary>
            <value>
            <c>true</c> if access to the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is synchronized
            (thread-safe); otherwise, <c>false</c>. The default is <c>false</c>.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.ICollection.IsSynchronized"/> for details.
            </para><para>
            This property is provided for backwards compatibility only, as none of the
            <b>Tektosyne.Collections</b> classes support synchronized wrappers.</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.Item(`0)">
            <summary>
            Gets or sets the value associated with the specified key.</summary>
            <param name="key">
            The key whose value to get or set.</param>
            <value><para>
            The value associated with the specified <paramref name="key"/>.
            </para><para>
            If <paramref name="key"/> is not found, attempting to get it throws a <see cref="T:System.Collections.Generic.KeyNotFoundException"/>, and attempting to set it adds a new element with the
            specified key and value to the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</para></value>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            The property is set to an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> differs from the specified <paramref name="key"/>.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">
            The property is read, and <paramref name="key"/> does not exist in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The property is set, and the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.
            </exception>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedList`2.Item(`0)"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.System#Collections#IDictionary#Item(System.Object)">
            <summary>
            Gets or sets the value associated with the specified key.</summary>
            <param name="key">
            The key whose value to get or set. This argument must be compatible with <typeparamref name="TKey"/>.</param>
            <value><para>
            The value associated with the specified <paramref name="key"/>. When the property is
            set, this argument must be compatible with <typeparamref name="TValue"/>.
            </para><para>
            If <paramref name="key"/> is not found, attempting to get it throws a <see cref="T:System.Collections.Generic.KeyNotFoundException"/>, and attempting to set it adds a new element with the
            specified key and value to the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</para></value>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.InvalidCastException"><para>
            <paramref name="key"/> is not compatible with <typeparamref name="TKey"/>.
            </para><para>-or-</para><para>
            The property is set to a value that is not compatible with <typeparamref name="TValue"/>.</para></exception>
            <exception cref="T:System.NotSupportedException">
            The property is set, and the <see cref="T:Tektosyne.Collections.SortedListEx`2"/> is read-only.
            </exception>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.Keys">
            <summary>
            Gets a collection containing the keys in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            </summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.IList`1"/> containing the keys in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedList`2.Keys"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.System#Collections#Generic#IDictionary{TKey@TValue}#Keys">
            <summary>
            Gets a collection containing the keys in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            </summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.ICollection`1"/> containing the keys in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</value>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.System#Collections#IDictionary#Keys">
            <summary>
            Gets a collection containing the keys in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            </summary>
            <value>
            A read-only <see cref="T:System.Collections.ICollection"/> containing the keys in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</value>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.SyncRoot">
            <summary>
            Gets an object that can be used to synchronize access to the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</summary>
            <value>
            An object that can be used to synchronize access to the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.ICollection.SyncRoot"/> for details.
            </para><para>
            When synchronizing multi-threaded access to the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>, obtain a lock on the <b>SyncRoot</b> object rather than the collection
            itself.</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.Values">
            <summary>
            Gets a collection containing the values in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            </summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.IList`1"/> containing the values in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedList`2.Values"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.System#Collections#Generic#IDictionary{TKey@TValue}#Values">
            <summary>
            Gets a collection containing the values in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            </summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.ICollection`1"/> containing the values in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</value>
        </member>
        <member name="P:Tektosyne.Collections.SortedListEx`2.System#Collections#IDictionary#Values">
            <summary>
            Gets a collection containing the values in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.
            </summary>
            <value>
            A read-only <see cref="T:System.Collections.ICollection"/> containing the values in the <see cref="T:Tektosyne.Collections.SortedListEx`2"/>.</value>
        </member>
        <member name="T:Tektosyne.Windows.HwndWrapper">
            <summary>
            Wraps a Win32 HWND in the Windows Forms <see cref="T:System.Windows.Forms.IWin32Window"/> interface.</summary>
            <remarks><para>
            WPF and Windows Forms both define top-level windows that are associated with Win32 window
            handles (HWNDs) and provide simple interfaces to extract these handles. Incredibly, WPF does
            not reuse the <see cref="T:System.Windows.Forms.IWin32Window"/> interface defined by Windows Forms for this purpose
            but defines its own incompatible <b>IWin32Window</b> interface.
            </para><para>
            Although the two interfaces are functionally identical they still constitute different
            types, with no conversion between them. This means you cannot pass a WPF window to a Windows
            Forms dialog that expects an <see cref="T:System.Windows.Forms.IWin32Window"/> instance, even though you already
            have the HWND required for that interface.
            </para><para>
            <b>HwndWrapper</b> resolves this sad defect by providing a trivial Windows Forms <see cref="T:System.Windows.Forms.IWin32Window"/> implementation whose <see cref="P:System.Windows.Forms.IWin32Window.Handle"/> property simply
            returns a value specified during construction as either a naked <see cref="T:System.IntPtr"/>, a WPF
            <see cref="T:System.Windows.Window"/>, or the WPF variant of <see cref="T:System.Windows.Interop.IWin32Window"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.HwndWrapper.#ctor(System.IntPtr)">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.HwndWrapper"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.HwndWrapper"/> class with the specified
            <see cref="T:System.IntPtr"/>.</summary>
            <param name="handle">
            The initial value for the <see cref="P:Tektosyne.Windows.HwndWrapper.Handle"/> property.</param>
        </member>
        <member name="M:Tektosyne.Windows.HwndWrapper.#ctor(System.Windows.Window)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.HwndWrapper"/> class with the specified WPF
            <see cref="T:System.Windows.Window"/>.</summary>
            <param name="window">
            The WPF <see cref="T:System.Windows.Window"/> that provides the initial value for the <see cref="P:Tektosyne.Windows.HwndWrapper.Handle"/> property.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="window"/> is a null reference.</exception>
            <remarks>
            <b>Handle</b> is set to the <see cref="P:System.Windows.Interop.WindowInteropHelper.Handle"/> property of a new
            <see cref="T:System.Windows.Interop.WindowInteropHelper"/> instance created for the specified <paramref name="window"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.HwndWrapper.#ctor(System.Windows.Interop.IWin32Window)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.HwndWrapper"/> class with the specified WPF
            <see cref="T:System.Windows.Interop.IWin32Window"/>.</summary>
            <param name="window">
            The WPF <see cref="T:System.Windows.Interop.IWin32Window"/> that provides the initial value for the <see cref="P:Tektosyne.Windows.HwndWrapper.Handle"/> property.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="window"/> is a null reference.</exception>
            <remarks>
            <b>Handle</b> is set to the <see cref="P:System.Windows.Interop.IWin32Window.Handle"/> property of the
            specified <paramref name="window"/>.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.HwndWrapper.Handle">
            <summary>
            Gets the Win32 window handle wrapped by the <see cref="T:Tektosyne.Windows.HwndWrapper"/>.</summary>
            <value>
            The Win32 window handle wrapped by the <see cref="T:Tektosyne.Windows.HwndWrapper"/>. The default is <see cref="F:System.IntPtr.Zero"/>.</value>
            <remarks>
            <b>Handle</b> never changes once the <see cref="T:Tektosyne.Windows.HwndWrapper"/> has been constructed.
            </remarks>
        </member>
        <member name="T:Tektosyne.Geometry.FloodFill">
            <summary>
            Provides a flood fill algorithm.</summary>
            <remarks><para>
            <b>FloodFill</b> provides a general-purpose flood fill algorithm for arbitrary instances of
            the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> interface.
            </para><para>
            The flood fill algorithm starts on a specified starting location and recursively finds any
            adjacent locations that match the conditions defined by a specified <see cref="T:System.Predicate`1"/> delegate.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.FloodFill.#ctor(Tektosyne.Geometry.IPlanarGraph)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.FloodFill"/> class with the specified
            two-dimensional graph.</summary>
            <param name="graph">
            The initial value for the <see cref="P:Tektosyne.Geometry.FloodFill.Graph"/> property.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="graph"/> is a null reference.</exception>
        </member>
        <member name="M:Tektosyne.Geometry.FloodFill.FindMatching(System.Predicate{System.Drawing.Point},System.Drawing.Point)">
            <summary>
            Finds all contiguous locations that match the specified conditions, starting from the
            specified location.</summary>
            <param name="match">
            The <see cref="T:System.Predicate`1"/> delegate that defines the conditions each location
            must match.</param>
            <param name="source">
            The coordinates of the starting location.</param>
            <returns>
            <c>true</c> if one or more locations could be reached from the specified <paramref name="source"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="match"/> is a null reference.</exception>
            <remarks><para>
            <b>FindMatching</b> returns <c>false</c> if the specified <paramref name="source"/>
            location is invalid, or if there are no contiguous locations for which <paramref name="match"/> succeeds.
            </para><para>
            Otherwise, <b>FindMatching</b> returns <c>true</c> and sets the <see cref="P:Tektosyne.Geometry.FloodFill.Locations"/>
            property to the result of the flood fill.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.FloodFill.ExpandArea(System.Drawing.Point)">
            <summary>
            Expands the current fill area with all neighbors of the specified location for which the
            matching predicate succeeds.</summary>
            <param name="location">
            The current location whose neighbors to examine.</param>
            <remarks><para>
            <b>ExpandArea</b> recursively visits all contiguous locations for which the matching
            predicate succeeds, and adds them to the <see cref="P:Tektosyne.Geometry.FloodFill.Locations"/> collection.
            </para><para>
            <b>ExpandArea</b> never revisits locations that were already added or rejected. The
            source location specified in the <see cref="M:Tektosyne.Geometry.FloodFill.FindMatching(System.Predicate{System.Drawing.Point},System.Drawing.Point)"/> call is never added to the
            <b>Locations</b> collection.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.FloodFill.InitializeCollections(System.Int32)">
            <summary>
            Clears all result and intermediate collections, and sets their capacity to at least the
            specified value.</summary>
            <param name="capacity">
            The new minimum capacity for all result and intermediate collections.</param>
        </member>
        <member name="P:Tektosyne.Geometry.FloodFill.Graph">
            <summary>
            Gets the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> on which all searches are performed.</summary>
            <value>
            An <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> object that defines the two-dimensional graph on which all
            searches are performed.</value>
            <remarks>
            <b>Graph</b> never returns a null reference. This property never changes once the object
            has been constructed.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.FloodFill.Locations">
            <summary>
            Gets a list of all locations that were reached by the last successful search.</summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.IList`1"/> containing the coordinates of all locations that
            were reached by the last successful call to <see cref="M:Tektosyne.Geometry.FloodFill.FindMatching(System.Predicate{System.Drawing.Point},System.Drawing.Point)"/>, not including
            the source location.</value>
            <remarks>
            <b>Locations</b> never returns a null reference, but it returns an empty collection if
            the last call to <see cref="M:Tektosyne.Geometry.FloodFill.FindMatching(System.Predicate{System.Drawing.Point},System.Drawing.Point)"/> returned <c>false</c>, or if the method has
            not yet been called.</remarks>
        </member>
        <member name="T:Tektosyne.Geometry.LineF">
            <summary>
            Represents a directed line in two-dimensional space, using <see cref="T:System.Single"/> coordinates.
            </summary>
            <remarks><para>
            The <b>LineF</b> structure holds two <see cref="T:System.Drawing.PointF"/> values that indicate the <see cref="P:Tektosyne.Geometry.LineF.Start"/> and <see cref="P:Tektosyne.Geometry.LineF.End"/> coordinates of a directed line. Its <see cref="P:Tektosyne.Geometry.LineF.Angle"/> and <see cref="P:Tektosyne.Geometry.LineF.Length"/> are calculated on demand.
            </para><para>
            Two operators convert to and from <see cref="T:System.Drawing.RectangleF"/> instances. This is a lossless
            conversion as <see cref="T:System.Drawing.RectangleF"/> holds exactly the same data as <b>LineF</b>.
            </para><para>
            Use the <see cref="T:Tektosyne.Geometry.LineI"/> structure to represent directed lines with <see cref="T:System.Int32"/>
            coordinates, and the <see cref="T:Tektosyne.Geometry.Line"/> structure to represent directed lines with <see cref="T:System.Double"/> coordinates. Two more operators convert to and from <see cref="T:Tektosyne.Geometry.LineI"/>
            instances, rounding off the <see cref="T:System.Single"/> coordinates of the <b>LineF</b> instance as
            necessary.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineF.#ctor(System.Single,System.Single,System.Single,System.Single)">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.LineF"/> structure.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.LineF"/> structure with the specified start
            and end coordinates.</summary>
            <param name="startX">
            The initial value for the <see cref="P:System.Drawing.PointF.X"/> coordinate of the <see cref="P:Tektosyne.Geometry.LineF.Start"/>
            property.</param>
            <param name="startY">
            The initial value for the <see cref="P:System.Drawing.PointF.Y"/> coordinate of the <see cref="P:Tektosyne.Geometry.LineF.Start"/>
            property.</param>
            <param name="endX">
            The initial value for the <see cref="P:System.Drawing.PointF.X"/> coordinate of the <see cref="P:Tektosyne.Geometry.LineF.End"/>
            property.</param>
            <param name="endY">
            The initial value for the <see cref="P:System.Drawing.PointF.Y"/> coordinate of the <see cref="P:Tektosyne.Geometry.LineF.End"/>
            property.</param>
        </member>
        <member name="M:Tektosyne.Geometry.LineF.#ctor(System.Drawing.PointF,System.Drawing.PointF)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.LineF"/> structure with the specified start
            and end coordinates.</summary>
            <param name="start">
            The initial value for the <see cref="P:Tektosyne.Geometry.LineF.Start"/> property.</param>
            <param name="end">
            The initial value for the <see cref="P:Tektosyne.Geometry.LineF.End"/> property.</param>
        </member>
        <member name="F:Tektosyne.Geometry.LineF.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.Geometry.LineF"/> instance.</summary>
            <remarks>
            <b>Empty</b> contains a <see cref="T:Tektosyne.Geometry.LineF"/> instance that was created with the default
            constructor.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineF.GetHashCode">
            <summary>
            Returns the hash code for this <see cref="T:Tektosyne.Geometry.LineF"/> instance.</summary>
            <returns>
            An <see cref="T:System.Int32"/> hash code.</returns>
            <remarks>
            <b>GetHashCode</b> returns the result of <see cref="M:System.Drawing.RectangleF.GetHashCode"/> for a <see cref="T:System.Drawing.RectangleF"/> whose edge locations equal the <see cref="P:Tektosyne.Geometry.LineF.Start"/> and <see cref="P:Tektosyne.Geometry.LineF.End"/>
            properties of this <see cref="T:Tektosyne.Geometry.LineF"/> instance.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineF.ToString">
            <summary>
            Returns a <see cref="T:System.String"/> that represents the <see cref="T:Tektosyne.Geometry.LineF"/>.</summary>
            <returns>
            A <see cref="T:System.String"/> containing the coordinates of the <see cref="P:Tektosyne.Geometry.LineF.Start"/> and <see cref="P:Tektosyne.Geometry.LineF.End"/> properties.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.LineF.op_Equality(Tektosyne.Geometry.LineF,Tektosyne.Geometry.LineF)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.Geometry.LineF"/> instances have the same value.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Geometry.LineF"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Geometry.LineF"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.Geometry.LineF.Equals(Tektosyne.Geometry.LineF)"/> method to test the two <see cref="T:Tektosyne.Geometry.LineF"/> instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineF.op_Inequality(Tektosyne.Geometry.LineF,Tektosyne.Geometry.LineF)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.Geometry.LineF"/> instances have different values.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Geometry.LineF"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Geometry.LineF"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is different from the value of
            <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.Geometry.LineF.Equals(Tektosyne.Geometry.LineF)"/> method to test the two <see cref="T:Tektosyne.Geometry.LineF"/> instances for value inequality.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineF.op_Implicit(Tektosyne.Geometry.LineI)~Tektosyne.Geometry.LineF">
            <summary>
            Converts a <see cref="T:Tektosyne.Geometry.LineI"/> to a <see cref="T:Tektosyne.Geometry.LineF"/> with identical property values.
            </summary>
            <param name="line">
            The <see cref="T:Tektosyne.Geometry.LineI"/> instance to convert into a <see cref="T:Tektosyne.Geometry.LineF"/> instance.</param>
            <returns>
            A <see cref="T:Tektosyne.Geometry.LineF"/> instance whose <see cref="P:Tektosyne.Geometry.LineF.Start"/> and <see cref="P:Tektosyne.Geometry.LineF.End"/>
            properties equal the corresponding properties of the specified <paramref name="line"/>.
            </returns>
        </member>
        <member name="M:Tektosyne.Geometry.LineF.op_Explicit(Tektosyne.Geometry.LineF)~Tektosyne.Geometry.LineI">
            <summary>
            Converts a <see cref="T:Tektosyne.Geometry.LineF"/> to a <see cref="T:Tektosyne.Geometry.LineI"/> with identical property values.
            </summary>
            <param name="line">
            The <see cref="T:Tektosyne.Geometry.LineF"/> instance to convert into a <see cref="T:Tektosyne.Geometry.LineI"/> instance.</param>
            <returns>
            A <see cref="T:Tektosyne.Geometry.LineI"/> instance whose <see cref="P:Tektosyne.Geometry.LineF.Start"/> and <see cref="P:Tektosyne.Geometry.LineF.End"/>
            properties equal the corresponding properties of the specified <paramref name="line"/>.
            </returns>
            <remarks>
            The <see cref="T:System.Single"/> coordinates of the specified <paramref name="line"/> are
            converted to <see cref="T:System.Int32"/> coordinates using <see cref="M:Tektosyne.Fortran.NInt(System.Decimal)"/> rounding.
            </remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineF.op_Explicit(System.Drawing.RectangleF)~Tektosyne.Geometry.LineF">
            <summary>
            Converts a <see cref="T:System.Drawing.RectangleF"/> to a <see cref="T:Tektosyne.Geometry.LineF"/> extending from the top-left to
            the bottom-right corner.</summary>
            <param name="rectangle">
            The <see cref="T:System.Drawing.RectangleF"/> instance to convert into a <see cref="T:Tektosyne.Geometry.LineF"/> instance.
            </param>
            <returns>
            A <see cref="T:Tektosyne.Geometry.LineF"/> instance whose <see cref="P:Tektosyne.Geometry.LineF.Start"/> and <see cref="P:Tektosyne.Geometry.LineF.End"/>
            properties equal the edge locations of the specified <paramref name="rectangle"/>.
            </returns>
        </member>
        <member name="M:Tektosyne.Geometry.LineF.op_Explicit(Tektosyne.Geometry.LineF)~System.Drawing.RectangleF">
            <summary>
            Converts a <see cref="T:Tektosyne.Geometry.LineF"/> to a <see cref="T:System.Drawing.RectangleF"/> extending from <see cref="P:Tektosyne.Geometry.LineF.Start"/> to <see cref="P:Tektosyne.Geometry.LineF.End"/>.</summary>
            <param name="line">
            The <see cref="T:Tektosyne.Geometry.LineF"/> instance to convert into a <see cref="T:System.Drawing.RectangleF"/> instance.
            </param>
            <returns>
            A <see cref="T:System.Drawing.RectangleF"/> instance whose edge locations equal the values of the <see cref="P:Tektosyne.Geometry.LineF.Start"/> and <see cref="P:Tektosyne.Geometry.LineF.End"/> properties of the specified <paramref name="line"/>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.LineF.Equals(System.Object)">
            <overloads>
            Determines whether two <see cref="T:Tektosyne.Geometry.LineF"/> instances have the same value.</overloads>
            <summary>
            Determines whether this <see cref="T:Tektosyne.Geometry.LineF"/> instance and a specified object, which must
            be a <see cref="T:Tektosyne.Geometry.LineF"/>, have the same value.</summary>
            <param name="obj">
            An <see cref="T:System.Object"/> to compare to this <see cref="T:Tektosyne.Geometry.LineF"/> instance.</param>
            <returns>
            <c>true</c> if <paramref name="obj"/> is another <see cref="T:Tektosyne.Geometry.LineF"/> instance and its
            value is the same as this instance; otherwise, <c>false</c>.</returns>
            <remarks>
            If the specified <paramref name="obj"/> is another <see cref="T:Tektosyne.Geometry.LineF"/> instance,
            <b>Equals</b> invokes the strongly-typed <see cref="M:Tektosyne.Geometry.LineF.Equals(Tektosyne.Geometry.LineF)"/> overload to test
            the two instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineF.Equals(Tektosyne.Geometry.LineF)">
            <summary>
            Determines whether this instance and a specified <see cref="T:Tektosyne.Geometry.LineF"/> have the same
            value.</summary>
            <param name="line">
            A <see cref="T:Tektosyne.Geometry.LineF"/> to compare to this instance.</param>
            <returns>
            <c>true</c> if the value of <paramref name="line"/> is the same as this instance;
            otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> compares the values of the <see cref="P:Tektosyne.Geometry.LineF.Start"/> and <see cref="P:Tektosyne.Geometry.LineF.End"/>
            properties of the two <see cref="T:Tektosyne.Geometry.LineF"/> instances to test for value equality.
            </remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineF.Equals(Tektosyne.Geometry.LineF,Tektosyne.Geometry.LineF)">
            <summary>
            Determines whether two specified <see cref="T:Tektosyne.Geometry.LineF"/> instances have the same value.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Geometry.LineF"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Geometry.LineF"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> invokes the non-static <see cref="M:Tektosyne.Geometry.LineF.Equals(Tektosyne.Geometry.LineF)"/> overload to test the
            two <see cref="T:Tektosyne.Geometry.LineF"/> instances for value equality.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.LineF.Angle">
            <summary>
            Gets the angle of the <see cref="T:Tektosyne.Geometry.LineF"/>, in radians.</summary>
            <value>
            The angle, measured in radians, of the direction on the Cartesian plane into which the
            line represented by this <see cref="T:Tektosyne.Geometry.LineF"/> instance is pointing.</value>
            <remarks><para>
            <b>Angle</b> returns the result of <see cref="M:System.Math.Atan2(System.Double,System.Double)"/> for the horizontal and
            vertical distances between the <see cref="P:Tektosyne.Geometry.LineF.End"/> and <see cref="P:Tektosyne.Geometry.LineF.Start"/> properties.
            </para><para>
            <b>Angle</b> equals zero if the line represented by this <see cref="T:Tektosyne.Geometry.LineF"/> instance
            extends horizontally to the right, and increases as the line turns clockwise. The
            possible range of values is [-<see cref="F:System.Math.PI"/>, <see cref="F:System.Math.PI"/>].
            </para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.LineF.Degrees">
            <summary>
            Gets the angle of the <see cref="T:Tektosyne.Geometry.LineF"/>, in degrees.</summary>
            <value>
            The angle, measured in degrees, of the direction on the Cartesian plane into which the
            line represented by this <see cref="T:Tektosyne.Geometry.LineF"/> instance is pointing.</value>
            <remarks><para>
            <b>Degrees</b> returns the value of <see cref="P:Tektosyne.Geometry.LineF.Angle"/>, converted to degrees.
            </para><para>
            <b>Degrees</b> equals zero if the line represented by this <see cref="T:Tektosyne.Geometry.LineF"/> instance
            extends horizontally to the right, and increases as the line turns clockwise. The
            possible range of values is [-180, 180].</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.LineF.End">
            <summary>
            Gets or sets the end coordinates of the <see cref="T:Tektosyne.Geometry.LineF"/>.</summary>
            <value>
            The coordinates of the point where the line represented by this <see cref="T:Tektosyne.Geometry.LineF"/>
            instance ends.</value>
        </member>
        <member name="P:Tektosyne.Geometry.LineF.Length">
            <summary>
            Gets the absolute length of the <see cref="T:Tektosyne.Geometry.LineF"/>.</summary>
            <value>
            A non-negative <see cref="T:System.Double"/> value indicating the absolute length of line
            represented by this <see cref="T:Tektosyne.Geometry.LineF"/> instance.</value>
        </member>
        <member name="P:Tektosyne.Geometry.LineF.Size">
            <summary>
            Gets the Cartesian dimensions of the <see cref="T:Tektosyne.Geometry.LineF"/>.</summary>
            <value>
            A <see cref="T:System.Drawing.SizeF"/> value defined as (<b>End.X</b> - <b>Start.X</b>, <b>End.Y</b> -
            <b>Start.Y</b>).</value>
            <remarks>
            The <see cref="P:System.Drawing.SizeF.Width"/> and <see cref="P:System.Drawing.SizeF.Height"/> properties of <b>Size</b>
            may be zero or negative, depending on the direction of this <see cref="T:Tektosyne.Geometry.LineF"/>
            instance.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.LineF.Start">
            <summary>
            Gets or sets the start coordinates of the <see cref="T:Tektosyne.Geometry.LineF"/>.</summary>
            <value>
            The coordinates of the point where the line represented by this <see cref="T:Tektosyne.Geometry.LineF"/>
            instance starts.</value>
        </member>
        <member name="T:Tektosyne.Collections.KeyMismatchException">
            <summary>
            The exception that is thrown when dictionary and <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> keys are
            mismatched.</summary>
            <remarks><para>
            <b>KeyMismatchException</b> extends the <see cref="T:System.InvalidOperationException"/> class with
            two additional properties, <see cref="P:Tektosyne.Collections.KeyMismatchException.Key"/> and <see cref="P:Tektosyne.Collections.KeyMismatchException.ValueKey"/>, holding the mismatched key values that caused the
            exception.
            </para><para>
            <b>KeyMismatchException</b> is thrown by the generic dictionary classes in the 
            <b>Tektosyne.Collections</b> namespace when the user attempts to associate an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance with a dictionary <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> that differs from the object's own <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/>.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyMismatchException.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyMismatchException"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyMismatchException"/> class with default
            properties.</summary>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.Collections.KeyMismatchException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.Message"/></term>
            <description>A localized message indicating mismatched key values.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.Key"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.ValueKey"/></term>
            <description>A null reference.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyMismatchException.#ctor(System.Object,System.Object)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyMismatchException"/> class with the
            mismatched key values that caused the exception.</summary>
            <param name="key">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> that was found or stored in a <see cref="T:System.Collections.Generic.KeyValuePair`2"/> associated with <paramref name="valueKey"/>.</param>
            <param name="valueKey">
            The <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> that was found or stored in an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance associated with <paramref name="key"/>.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.Collections.KeyMismatchException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.Message"/></term>
            <description>A localized message, followed by the specified <paramref name="key"/> and
            <paramref name="valueKey"/> values.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.Key"/></term>
            <description>The specified <paramref name="key"/>.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.ValueKey"/></term>
            <description>The specified <paramref name="valueKey"/>.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyMismatchException.#ctor(System.Object,System.Object,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyMismatchException"/> class with the
            mismatched key values that caused the exception, and with the specified error message.
            </summary>
            <param name="key">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> that was found or stored in a <see cref="T:System.Collections.Generic.KeyValuePair`2"/> associated with <paramref name="valueKey"/>.</param>
            <param name="valueKey">
            The <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> that was found or stored in an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance associated with <paramref name="key"/>.</param>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.Collections.KeyMismatchException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.Message"/></term>
            <description>The specified <paramref name="message"/>, followed by the specified
            <paramref name="key"/> and <paramref name="valueKey"/>.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.Key"/></term>
            <description>The specified <paramref name="key"/>.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.ValueKey"/></term>
            <description>The specified <paramref name="valueKey"/>.</description>
            </item></list><para>
            If the specified <paramref name="message"/> is a null reference or an empty string, the
            <b>Message</b> property will contain a localized message indicating mismatched key
            values.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyMismatchException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyMismatchException"/> class with the
            specified error message.</summary>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.Collections.KeyMismatchException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.Message"/></term>
            <description>The specified <paramref name="message"/>.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.Key"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.ValueKey"/></term>
            <description>A null reference.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyMismatchException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyMismatchException"/> class with the
            specified error message and with the previous exception that is the cause of this <see cref="T:Tektosyne.Collections.KeyMismatchException"/>.</summary>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <param name="innerException">
            The previous <see cref="T:System.Exception"/> that is the cause of the current <see cref="T:Tektosyne.Collections.KeyMismatchException"/>.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.Collections.KeyMismatchException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>The specified <paramref name="innerException"/>.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.Message"/></term>
            <description>The specified <paramref name="message"/>.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.Key"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:Tektosyne.Collections.KeyMismatchException.ValueKey"/></term>
            <description>A null reference.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyMismatchException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyMismatchException"/> class with
            serialized data.</summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> object providing serialized object data for the <see cref="T:Tektosyne.Collections.KeyMismatchException"/>.</param>
            <param name="context">
            A <see cref="T:System.Runtime.Serialization.StreamingContext"/> object containing contextual information about the
            source or destination.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="info"/> is a null reference.</exception>
            <remarks><para>
            Please refer to <see cref="M:System.InvalidOperationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"/> for details.
            </para><para>
            The values of the <see cref="P:Tektosyne.Collections.KeyMismatchException.Key"/> and <see cref="P:Tektosyne.Collections.KeyMismatchException.ValueKey"/> properties are
            deserialized from two additional fields, named "Key" and "ValueKey".</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyMismatchException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> object with the data needed to serialize the
            exception.</summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> object that receives the serialized object data of
            the <see cref="T:Tektosyne.Collections.KeyMismatchException"/>.</param>
            <param name="context">
            A <see cref="T:System.Runtime.Serialization.StreamingContext"/> object containing contextual information about the
            source or destination.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="info"/> is a null reference.</exception>
            <remarks><para>
            Please refer to <see cref="M:System.Exception.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"/> for details.
            </para><para>
            The values of the <see cref="P:Tektosyne.Collections.KeyMismatchException.Key"/> and <see cref="P:Tektosyne.Collections.KeyMismatchException.ValueKey"/> properties are serialized
            to two additional fields, named "Key" and "ValueKey".</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.KeyMismatchException.Key">
            <summary>
            Gets the dictionary key that caused the exception.</summary>
            <value>
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> of a <see cref="T:System.Collections.Generic.KeyValuePair`2"/> that caused the <see cref="T:Tektosyne.Collections.KeyMismatchException"/>.</value>
            <remarks>
            <b>Key</b> is a null reference if no key was specified.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.KeyMismatchException.Message">
            <summary>
            Gets the error message, followed by the mismatched key values if available.</summary>
            <value>
            The error message passed to the constructor, followed by the values of the <see cref="P:Tektosyne.Collections.KeyMismatchException.Key"/> and <see cref="P:Tektosyne.Collections.KeyMismatchException.ValueKey"/> properties if they are not null references.
            </value>
            <remarks>
            The error message should be localized.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.KeyMismatchException.ValueKey">
            <summary>
            Gets the <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> key that caused the exception.</summary>
            <value>
            The <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> of an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance
            that caused the <see cref="T:Tektosyne.Collections.KeyMismatchException"/>.</value>
            <remarks>
            <b>ValueKey</b> is a null reference if no key was specified.</remarks>
        </member>
        <member name="T:Tektosyne.StringUtility">
            <summary>
            Provides auxiliary methods for <b>System.String</b>.</summary>
        </member>
        <member name="M:Tektosyne.StringUtility.CompareNatural(System.String,System.String)">
            <overloads>
            Compares two specified strings and returns an indication of their relative values,
            according to a natural sorting order.</overloads>
            <summary>
            Compares two specified strings and returns an indication of their relative values,
            according to a natural sorting order and using the sorting rules of the <see cref="F:System.StringComparison.CurrentCulture"/>.</summary>
            <param name="x">
            The first <see cref="T:System.String"/> to compare.</param>
            <param name="y">
            The second <see cref="T:System.String"/> to compare.</param>
            <returns><para>
            An <see cref="T:System.Int32"/> value indicating the relative order of <paramref name="x"/> and
            <paramref name="y"/>, as follows:
            </para><list type="table"><listheader>
            <term>Value</term><description>Condition</description>
            </listheader><item>
            <term>Less than zero</term>
            <description><paramref name="x"/> is less than <paramref name="y"/>.</description>
            </item><item>
            <term>Zero</term>
            <description><paramref name="x"/> equals <paramref name="y"/>.</description>
            </item><item>
            <term>Greater than zero</term>
            <description><paramref name="x"/> is greater than <paramref name="y"/>.</description>
            </item></list></returns>
            <remarks><para>
            <b>CompareNatural</b> is compatible with the <see cref="T:System.Comparison`1"/> delegate and
            can be passed to various sorting methods.
            </para><para>
            <b>CompareNatural</b> invokes the second <see cref="M:Tektosyne.StringUtility.CompareNatural(System.String,System.String,System.StringComparison)"/> overload with the specified arguments and the value <see cref="F:System.StringComparison.CurrentCulture"/>. Please see there for details.</para></remarks>
        </member>
        <member name="M:Tektosyne.StringUtility.CompareNatural(System.String,System.String,System.StringComparison)">
            <summary>
            Compares two specified strings and returns an indication of their relative values,
            according to a natural sorting order and using the specified sorting rules.</summary>
            <param name="x">
            The first <see cref="T:System.String"/> to compare.</param>
            <param name="y">
            The second <see cref="T:System.String"/> to compare.</param>
            <param name="comparison">
            A <see cref="T:System.StringComparison"/> value indicating how sequences of non-digit characters
            should be compared.</param>
            <returns><para>
            An <see cref="T:System.Int32"/> value indicating the relative order of <paramref name="x"/> and
            <paramref name="y"/>, as follows:
            </para><list type="table"><listheader>
            <term>Value</term><description>Condition</description>
            </listheader><item>
            <term>Less than zero</term>
            <description><paramref name="x"/> is less than <paramref name="y"/>.</description>
            </item><item>
            <term>Zero</term>
            <description><paramref name="x"/> equals <paramref name="y"/>.</description>
            </item><item>
            <term>Greater than zero</term>
            <description><paramref name="x"/> is greater than <paramref name="y"/>.</description>
            </item></list></returns>
            <remarks><para>
            Either or both arguments may be null references or empty strings. A null reference is
            considered smaller than a valid string, whether empty or not, and two null references
            are considered equal. An empty string is considered smaller than a non-empty string, and
            two empty strings are considered equal.
            </para><para>
            Non-empty strings are broken into sequences of decimal digits and non-digit characters,
            as determined by <see cref="M:System.Char.IsDigit(System.Char)"/>. A digit sequence is considered greater than
            a non-digit sequence. Two digit sequences are compared by their numeric values which
            must fit in the <see cref="T:System.Int32"/> type. Two non-digit sequences are compared using the
            <see cref="M:System.String.Compare(System.String,System.String)"/> method with the specified <paramref name="comparison"/>
            options. The return value of <b>CompareNatural</b> is determined by the first pair of
            sequences that are not considered equal.</para></remarks>
        </member>
        <member name="M:Tektosyne.StringUtility.CompareOrdinal(System.String,System.String)">
            <summary>
            Compares two specified strings and returns an indication of their relative values,
            according to a natural sorting order and using <see cref="F:System.StringComparison.Ordinal"/>
            sorting rules.</summary>
            <param name="x">
            The first <see cref="T:System.String"/> to compare.</param>
            <param name="y">
            The second <see cref="T:System.String"/> to compare.</param>
            <returns><para>
            An <see cref="T:System.Int32"/> value indicating the relative order of <paramref name="x"/> and
            <paramref name="y"/>, as follows:
            </para><list type="table"><listheader>
            <term>Value</term><description>Condition</description>
            </listheader><item>
            <term>Less than zero</term>
            <description><paramref name="x"/> is less than <paramref name="y"/>.</description>
            </item><item>
            <term>Zero</term>
            <description><paramref name="x"/> equals <paramref name="y"/>.</description>
            </item><item>
            <term>Greater than zero</term>
            <description><paramref name="x"/> is greater than <paramref name="y"/>.</description>
            </item></list></returns>
            <remarks><para>
            <b>CompareOrdinal</b> is compatible with the <see cref="T:System.Comparison`1"/> delegate and
            can be passed to various sorting methods.
            </para><para>
            <b>CompareOrdinal</b> invokes <see cref="M:Tektosyne.StringUtility.CompareNatural(System.String,System.String,System.StringComparison)"/> overload with the specified arguments and the value <see cref="F:System.StringComparison.Ordinal"/>. Please see there for details.</para></remarks>
        </member>
        <member name="M:Tektosyne.StringUtility.IsRichText(System.String)">
            <summary>
            Determines whether the specified <see cref="T:System.String"/> contains text in Rich Text Format
            (RTF).</summary>
            <param name="value">
            The <see cref="T:System.String"/> to examine.</param>
            <returns>
            <c>true</c> if the specified <paramref name="value"/> starts with the literal string
            "{\rtf"; otherwise, <c>false</c>.</returns>
            <remarks>
            <b>IsRichText</b> returns <c>false</c> if the specified <paramref name="value"/> is a
            null reference or an empty string.</remarks>
        </member>
        <member name="M:Tektosyne.StringUtility.IsValidEmail(System.String)">
            <summary>
            Determines whether the specified <see cref="T:System.String"/> contains a valid e-mail address.
            </summary>
            <param name="value">
            The <see cref="T:System.String"/> to examine.</param>
            <returns>
            <c>true</c> if the specified <paramref name="value"/> contains a valid e-mail address;
            otherwise, <c>false</c>.</returns>
            <remarks>
            <b>IsValidEmail</b> returns <c>false</c> if the specified <paramref name="value"/> is a
            null reference or an empty string.</remarks>
        </member>
        <member name="M:Tektosyne.StringUtility.Join(System.String,System.Object[])">
            <overloads>
            Concatenates the specified separator <see cref="T:System.String"/> between each of the specified
            values, yielding a single concatenated <see cref="T:System.String"/>.</overloads>
            <summary>
            Concatenates the specified separator <see cref="T:System.String"/> between each element of the
            specified <see cref="T:System.Array"/>, yielding a single concatenated <see cref="T:System.String"/>.
            </summary>
            <param name="separator">
            The <see cref="T:System.String"/> to insert between adjacent elements of <paramref name="array"/>.</param>
            <param name="array">
            The <see cref="T:System.Array"/> whose elements to format.</param>
            <returns><para>
            A <see cref="T:System.String"/> consisting of the string representations of all <paramref name="array"/> elements, interspersed with the <paramref name="separator"/> string.
            </para><para>-or-</para><para>
            An empty string if <paramref name="array"/> is a null reference or an empty array.
            </para></returns>
            <remarks>
            <b>Join</b> provides the functionality of <see cref="M:System.String.Join(System.String,System.String[])"/> for arrays of
            arbitrary objects. The array elements are formatted using the <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)"/> method of the <see cref="T:System.Text.StringBuilder"/> class.</remarks>
        </member>
        <member name="M:Tektosyne.StringUtility.Join(System.String,System.Collections.ICollection)">
            <summary>
            Concatenates the specified separator <see cref="T:System.String"/> between each element of the
            specified <see cref="T:System.Collections.ICollection"/>, yielding a single concatenated <see cref="T:System.String"/>.</summary>
            <param name="separator">
            The <see cref="T:System.String"/> to insert between adjacent elements of <paramref name="collection"/>.</param>
            <param name="collection">
            The <see cref="T:System.Collections.ICollection"/> whose elements to format.</param>
            <returns><para>
            A <see cref="T:System.String"/> consisting of the string representations of all <paramref name="collection"/> elements, interspersed with the <paramref name="separator"/> string.
            </para><para>-or-</para><para>
            An empty string if <paramref name="collection"/> is a null reference or an empty
            collection.</para></returns>
            <remarks>
            <b>Join</b> provides the functionality of <see cref="M:System.String.Join(System.String,System.String[])"/> for collections of
            arbitrary objects. The collection elements are formatted using the <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)"/> method of the <see cref="T:System.Text.StringBuilder"/> class.</remarks>
        </member>
        <member name="M:Tektosyne.StringUtility.PackSpace(System.String)">
            <summary>
            Replaces sequences of whitespace in the specified <see cref="T:System.String"/> with a single
            space character each.</summary>
            <param name="value">
            The <see cref="T:System.String"/> whose whitespace sequences should be packed.</param>
            <returns>
            A copy of <paramref name="value"/> in which all sequences of whitespace have been
            replaced by a single space character.</returns>
            <remarks><para>
            <b>PackSpace</b> uses the <see cref="T:System.Text.RegularExpressions.Regex"/> expression "\s+" to identify sequences of
            whitespace. The replacement character is a standard space (Unicode character 32, SPACE).
            </para><para>
            <b>PackSpace</b> returns an empty string if <paramref name="value"/> is a null reference
            or an empty string.</para></remarks>
        </member>
        <member name="M:Tektosyne.StringUtility.Validate(System.String)">
            <overloads>
            Returns the specified <see cref="T:System.String"/> if it is neither empty nor a null reference,
            otherwise a valid replacement text.</overloads>
            <summary>
            Returns the specified <see cref="T:System.String"/> if it is neither empty nor a null reference,
            otherwise a short debug text.</summary>
            <param name="value">
            The <see cref="T:System.String"/> to validate.</param>
            <returns>
            The literal string "(null)" if <paramref name="value"/> is a null reference; otherwise,
            the literal string "(empty)" if <paramref name="value"/> is an empty string; otherwise,
            the specified <paramref name="value"/>.</returns>
            <remarks>
            This <b>Validate</b> overload is intended for debugging.</remarks>
        </member>
        <member name="M:Tektosyne.StringUtility.Validate(System.String,System.String)">
            <summary>
            Returns the specified <see cref="T:System.String"/> if it is neither empty nor a null reference,
            otherwise the specified replacement text.</summary>
            <param name="value">
            The <see cref="T:System.String"/> to validate.</param>
            <param name="replace">
            The <see cref="T:System.String"/> to return if <paramref name="value"/> is a null reference or an
            empty string.</param>
            <returns>
            The specified <paramref name="replace"/> text if <paramref name="value"/> is a null
            reference or an empty string; otherwise, the specified <paramref name="value"/>.
            </returns>
            <remarks>
            This <b>Validate</b> overload is intended for generating output visible to the user.
            </remarks>
        </member>
        <member name="M:Tektosyne.StringUtility.Validate``1(``0)">
            <summary>
            Returns a <see cref="T:System.String"/> representation of the specified object if it is neither
            empty nor a null reference, otherwise a short debug text.</summary>
            <typeparam name="T">
            The type of the object to validate.</typeparam>
            <param name="value">
            The object to validate.</param>
            <returns>
            The literal string "(null)" if <paramref name="value"/> is a null reference; otherwise,
            the culture-invariant string representation of the specified <paramref name="value"/> if
            it is not an empty string; otherwise, the literal string "(empty)".</returns>
            <remarks>
            This <b>Validate</b> overload is intended for debugging.</remarks>
        </member>
        <member name="M:Tektosyne.StringUtility.Validate``1(``0,System.String)">
            <summary>
            Returns a <see cref="T:System.String"/> representation of the specified object if it is neither
            empty nor a null reference, otherwise the specified replacement text.</summary>
            <typeparam name="T">
            The type of the object to validate.</typeparam>
            <param name="value">
            The object to validate.</param>
            <param name="replace">
            The <see cref="T:System.String"/> to return if <paramref name="value"/> is a null reference, or 
            its string representation is a null reference or an empty string.</param>
            <returns>
            The specified <paramref name="replace"/> text if <paramref name="value"/> is a null
            reference, or its string representation is a null reference or an empty string;
            otherwise, the culture-invariant string representation of the specified <paramref name="value"/>.</returns>
            <remarks>
            This <b>Validate</b> overload is intended for generating output visible to the user.
            </remarks>
        </member>
        <member name="T:Tektosyne.Net.MapiAddress">
            <summary>
            Represents the sender or recipient of a Simple MAPI message.</summary>
            <remarks><para>
            The <see cref="T:Tektosyne.Net.MapiMail"/> class uses <b>MapiAddress</b> instances to represent the sender
            or recipient of a Simple MAPI message. Each <b>MapiAddress</b> instance associates a display
            name with an actual e-mail address.
            </para><para>
            <b>MapiAddress</b> may also describe a file attachment. In that case, the <see cref="P:Tektosyne.Net.MapiAddress.Name"/> component represents the display name of the file, and the <see cref="P:Tektosyne.Net.MapiAddress.Address"/> component represents its local file path.</para></remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiAddress.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Net.MapiAddress"/> structure.</summary>
            <param name="name">
            The initial value for the <see cref="P:Tektosyne.Net.MapiAddress.Name"/> property.</param>
            <param name="address">
            The initial value for the <see cref="P:Tektosyne.Net.MapiAddress.Address"/> property.</param>
        </member>
        <member name="F:Tektosyne.Net.MapiAddress.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.Net.MapiAddress"/> instance.</summary>
            <remarks>
            <b>Empty</b> contains a <see cref="T:Tektosyne.Net.MapiAddress"/> instance that was created with the
            default constructor.</remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiAddress.GetHashCode">
            <summary>
            Returns the hash code for this <see cref="T:Tektosyne.Net.MapiAddress"/> instance.</summary>
            <returns>
            An <see cref="T:System.Int32"/> hash code.</returns>
            <remarks>
            <b>GetHashCode</b> combines the results of <see cref="M:System.String.GetHashCode"/> for the <see cref="P:Tektosyne.Net.MapiAddress.Name"/> or <see cref="P:Tektosyne.Net.MapiAddress.Address"/> properties.</remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiAddress.ToString">
            <summary>
            Returns a <see cref="T:System.String"/> that represents the <see cref="T:Tektosyne.Net.MapiAddress"/>.</summary>
            <returns>
            A <see cref="T:System.String"/> containing the culture-invariant string representations of the
            <see cref="P:Tektosyne.Net.MapiAddress.Name"/> and <see cref="P:Tektosyne.Net.MapiAddress.Address"/> properties.</returns>
        </member>
        <member name="M:Tektosyne.Net.MapiAddress.op_Equality(Tektosyne.Net.MapiAddress,Tektosyne.Net.MapiAddress)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.Net.MapiAddress"/> instances have the same value.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Net.MapiAddress"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Net.MapiAddress"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.Net.MapiAddress.Equals(Tektosyne.Net.MapiAddress)"/> method to test the two <see cref="T:Tektosyne.Net.MapiAddress"/> instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiAddress.op_Inequality(Tektosyne.Net.MapiAddress,Tektosyne.Net.MapiAddress)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.Net.MapiAddress"/> instances have different values.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Net.MapiAddress"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Net.MapiAddress"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is different from the value of
            <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.Net.MapiAddress.Equals(Tektosyne.Net.MapiAddress)"/> method to test the two <see cref="T:Tektosyne.Net.MapiAddress"/> instances for value inequality.</remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiAddress.Equals(System.Object)">
            <overloads>
            Determines whether two <see cref="T:Tektosyne.Net.MapiAddress"/> instances have the same value.
            </overloads>
            <summary>
            Determines whether this <see cref="T:Tektosyne.Net.MapiAddress"/> instance and a specified object, which
            must be a <see cref="T:Tektosyne.Net.MapiAddress"/>, have the same value.</summary>
            <param name="obj">
            An <see cref="T:System.Object"/> to compare to this <see cref="T:Tektosyne.Net.MapiAddress"/> instance.</param>
            <returns>
            <c>true</c> if <paramref name="obj"/> is another <see cref="T:Tektosyne.Net.MapiAddress"/> instance and
            its value is the same as this instance; otherwise, <c>false</c>.</returns>
            <remarks>
            If the specified <paramref name="obj"/> is another <see cref="T:Tektosyne.Net.MapiAddress"/> instance,
            <b>Equals</b> invokes the strongly-typed <see cref="M:Tektosyne.Net.MapiAddress.Equals(Tektosyne.Net.MapiAddress)"/> overload to
            test the two instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiAddress.Equals(Tektosyne.Net.MapiAddress)">
            <summary>
            Determines whether this instance and a specified <see cref="T:Tektosyne.Net.MapiAddress"/> have the same
            value.</summary>
            <param name="pair">
            A <see cref="T:Tektosyne.Net.MapiAddress"/> to compare to this instance.</param>
            <returns>
            <c>true</c> if the value of <paramref name="pair"/> is the same as this instance;
            otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> compares the values of the <see cref="P:Tektosyne.Net.MapiAddress.Name"/> and <see cref="P:Tektosyne.Net.MapiAddress.Address"/>
            properties of the two <see cref="T:Tektosyne.Net.MapiAddress"/> instances to test for value equality.
            </remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiAddress.Equals(Tektosyne.Net.MapiAddress,Tektosyne.Net.MapiAddress)">
            <summary>
            Determines whether two specified <see cref="T:Tektosyne.Net.MapiAddress"/> instances have the same
            value.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Net.MapiAddress"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Net.MapiAddress"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> invokes the non-static <see cref="M:Tektosyne.Net.MapiAddress.Equals(Tektosyne.Net.MapiAddress)"/> overload to test
            the two <see cref="T:Tektosyne.Net.MapiAddress"/> instances for value equality.</remarks>
        </member>
        <member name="P:Tektosyne.Net.MapiAddress.Name">
            <summary>
            Gets the display name of the <see cref="T:Tektosyne.Net.MapiAddress"/>.</summary>
            <value>
            The display name of the <see cref="T:Tektosyne.Net.MapiAddress"/>. The default is an empty string.
            </value>
            <remarks>
            <b>Name</b> returns an empty string when set to a null reference.</remarks>
        </member>
        <member name="P:Tektosyne.Net.MapiAddress.Address">
            <summary>
            Gets the e-mail address or the file path of the <see cref="T:Tektosyne.Net.MapiAddress"/>.</summary>
            <value>
            The e-mail address or the file path of the <see cref="T:Tektosyne.Net.MapiAddress"/>. The default is an
            empty string.</value>
            <remarks>
            <b>Address</b> returns an empty string when set to a null reference.</remarks>
        </member>
        <member name="T:Tektosyne.Windows.StackTextBlock">
            <summary>
            Provides a <see cref="T:System.Windows.Controls.TextBlock"/> with a message stack.</summary>
            <remarks>
            <b>StackTextBlock</b> enhances <see cref="T:System.Windows.Controls.TextBlock"/> with a <see cref="T:System.Collections.Generic.Stack`1"/> of
            recently displayed messages. This simplifies managing status messages in a WPF application,
            especially when multiple updates by nested method calls are involved.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.StackTextBlock.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.StackTextBlock"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.StackTextBlock"/> class with default
            properties.</summary>
        </member>
        <member name="M:Tektosyne.Windows.StackTextBlock.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.StackTextBlock"/> class with the specified
            initial and default <see cref="P:System.Windows.Controls.TextBlock.Text"/>.</summary>
            <param name="text">
            The initial value for the <see cref="P:System.Windows.Controls.TextBlock.Text"/> and <see cref="P:Tektosyne.Windows.StackTextBlock.DefaultText"/>
            properties.</param>
        </member>
        <member name="M:Tektosyne.Windows.StackTextBlock.Clear">
            <summary>
            Removes all entries from the message stack and shows the <see cref="P:Tektosyne.Windows.StackTextBlock.DefaultText"/>.
            </summary>
            <remarks>
            <b>Clear</b> removes all entries from the message stack and sets the <see cref="P:System.Windows.Controls.TextBlock.Text"/> property to <see cref="P:Tektosyne.Windows.StackTextBlock.DefaultText"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.StackTextBlock.Peek">
            <summary>
            Returns the entry at the top of the message stack without removing it.</summary>
            <returns>
            The entry at the top of the message stack.</returns>
            <remarks>
            <b>Peek</b> returns the <see cref="P:System.Windows.Controls.TextBlock.Text"/> that would be shown if <see cref="M:Tektosyne.Windows.StackTextBlock.Pop"/> was invoked on the <see cref="T:Tektosyne.Windows.StackTextBlock"/>. That is either the entry
            at the top of the message stack, or <see cref="P:Tektosyne.Windows.StackTextBlock.DefaultText"/> if the stack is empty.
            </remarks>
        </member>
        <member name="M:Tektosyne.Windows.StackTextBlock.Pop">
            <summary>
            Removes and shows the entry at the top of the message stack.</summary>
            <returns>
            The current <see cref="P:System.Windows.Controls.TextBlock.Text"/> before <b>Pop</b> was invoked.</returns>
            <remarks>
            <b>Pop</b> removes the entry at the top of the message stack, assigns it to the <see cref="P:System.Windows.Controls.TextBlock.Text"/> property, and returns the previous value of that property. If
            the message stack is empty, <b>Text</b> is set to <see cref="P:Tektosyne.Windows.StackTextBlock.DefaultText"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.StackTextBlock.Push">
            <overloads>
            Inserts the current <see cref="P:System.Windows.Controls.TextBlock.Text"/> at the top of the message stack.
            </overloads>
            <summary>
            Inserts the current <see cref="P:System.Windows.Controls.TextBlock.Text"/> at the top of the message stack.
            </summary>
            <remarks>
            <b>Push</b> inserts the current value of the <see cref="P:System.Windows.Controls.TextBlock.Text"/> property at
            the top of the message stack, without changing the <b>Text</b> property itself. Call
            this overload if you wish to maintain the current <see cref="P:System.Windows.Controls.TextBlock.Text"/> beyond a
            subsequent call to <see cref="M:Tektosyne.Windows.StackTextBlock.Pop"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.StackTextBlock.Push(System.String)">
            <summary>
            Inserts the current <see cref="P:System.Windows.Controls.TextBlock.Text"/> at the top of the message stack and
            shows the specified <b>Text</b>.</summary>
            <param name="text">
            The new value for the <see cref="P:System.Windows.Controls.TextBlock.Text"/> property.</param>
            <remarks>
            <b>Push</b> inserts the current value of the <see cref="P:System.Windows.Controls.TextBlock.Text"/> property at
            the top of the message stack, and then sets the <b>Text</b> property to the specified
            <paramref name="text"/>. Call this overload whenever you need to show a new <see cref="P:System.Windows.Controls.TextBlock.Text"/>, and then call <see cref="M:Tektosyne.Windows.StackTextBlock.Pop"/> at a later time to restore the
            previous <b>Text</b>.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.StackTextBlock.DefaultText">
            <summary>
            Gets or sets the default <see cref="P:System.Windows.Controls.TextBlock.Text"/> for the <see cref="T:Tektosyne.Windows.StackTextBlock"/>.</summary>
            <value>
            The default <see cref="P:System.Windows.Controls.TextBlock.Text"/> that the <see cref="T:Tektosyne.Windows.StackTextBlock"/> shows
            when the message stack is empty.</value>
            <remarks><para>
            <b>DefaultText</b> returns an empty string when set to a null reference.
            </para><para>
            Setting <b>DefaultText</b> also updates the current <see cref="P:System.Windows.Controls.TextBlock.Text"/> if the
            message stack is empty.</para></remarks>
        </member>
        <member name="T:Tektosyne.Windows.BitmapUtility">
            <summary>
            Provides auxiliary methods for the <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> class.</summary>
            <remarks>
            <b>BitmapUtility</b> provides conversions between <see cref="T:System.Windows.Media.Color"/> values and their <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> representations, and also several methods to directly
            manipulate the <see cref="P:System.Windows.Media.Imaging.WriteableBitmap.BackBuffer"/> of a <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/>.
            The bitmap must always use the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.BlendPixel(System.Windows.Media.Imaging.WriteableBitmap,System.Int32,System.Int32,System.Windows.Media.Color)">
            <summary>
            Blends the specified pixel in the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> with the
            specified <see cref="T:System.Windows.Media.Color"/>.</summary>
            <param name="bitmap">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> containing the pixel whose color to blend.</param>
            <param name="x">
            The x-coordinate of the pixel to blend with <paramref name="color"/>.</param>
            <param name="y">
            The y-coordinate of the pixel to blend with <paramref name="color"/>.</param>
            <param name="color">
            The <see cref="T:System.Windows.Media.Color"/> to blend with the pixel at the specified location in the
            specified <paramref name="bitmap"/>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="bitmap"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="bitmap"/> has not been locked for write access.</exception>
            <remarks><para>
            <b>BlendPixel</b> blends the pixel at the specified <paramref name="x"/> and <paramref name="y"/> coordinates within the <see cref="P:System.Windows.Media.Imaging.WriteableBitmap.BackBuffer"/> of the
            specified <paramref name="bitmap"/> with the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/>
            representation of the specified <paramref name="color"/>. No coordinate checking is
            performed.
            </para><note type="caution">
            For improved performance, <b>BlendPixel</b> does not attempt to lock the specified
            <paramref name="bitmap"/>. You must explicitly call <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Lock"/>
            and <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Unlock"/> before and after manipulating the <paramref name="bitmap"/>, respectively.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.BlendPbgra32(System.UInt32,System.UInt32)">
            <summary>
            Performs alpha blending of two specified <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> color
            values.</summary>
            <param name="source">
            The <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> color value to overlay on the <paramref name="target"/> color.</param>
            <param name="target">
            The <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> color value on which the <paramref name="source"/> color is overlaid.</param>
            <returns><para>
            The specified <paramref name="source"/> color value if its alpha channel is 255.
            </para><para>-or-</para><para>
            The specified <paramref name="target"/> color value if the alpha channel of <paramref name="source"/> is zero.
            </para><para>-or-</para><para>
            A new <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> color value that is the result of overlaying
            <paramref name="source"/> on <paramref name="target"/> with alpha blending.
            </para></returns>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.Clear(System.Windows.Media.Imaging.WriteableBitmap)">
            <overloads>
            Clears the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/>.</overloads>
            <summary>
            Clears the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/>.</summary>
            <param name="bitmap">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> whose pixels to clear.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="bitmap"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="bitmap"/> has not been locked for write access.</exception>
            <remarks><para>
            <b>Clear</b> sets all pixels within the specified <paramref name="bitmap"/> to zero,
            which is the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> equivalent of transparent black color.
            </para><note type="caution">
            For improved performance, <b>Clear</b> does not attempt to lock the specified <paramref name="bitmap"/>. You must explicitly call <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Lock"/> and <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Unlock"/> before and after manipulating the <paramref name="bitmap"/>, respectively.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.Clear(System.Windows.Media.Imaging.WriteableBitmap,System.Windows.Media.Color)">
            <summary>
            Clears the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> with the specified <see cref="T:System.Windows.Media.Color"/>.</summary>
            <param name="bitmap">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> whose pixels to clear.</param>
            <param name="color">
            The new <see cref="T:System.Windows.Media.Color"/> for all pixels in the specified <paramref name="bitmap"/>.
            </param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="bitmap"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="bitmap"/> has not been locked for write access.</exception>
            <remarks><para>
            <b>Clear</b> sets all pixels within the specified <paramref name="bitmap"/> to the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> representation of the specified <paramref name="color"/>.
            </para><note type="caution">
            For improved performance, <b>Clear</b> does not attempt to lock the specified <paramref name="bitmap"/>. You must explicitly call <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Lock"/> and <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Unlock"/> before and after manipulating the <paramref name="bitmap"/>, respectively.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.Clear(System.Windows.Media.Imaging.WriteableBitmap,System.Drawing.Rectangle,System.Windows.Media.Color)">
            <summary>
            Clears the specified rectangle within the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> with
            the specified <see cref="T:System.Windows.Media.Color"/>.</summary>
            <param name="bitmap">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> whose pixels to clear.</param>
            <param name="bounds">
            The pixel rectangle within the specified <paramref name="bitmap"/> to fill with the
            specified <paramref name="color"/>.</param>
            <param name="color">
            The new <see cref="T:System.Windows.Media.Color"/> for all pixels within the specified <paramref name="bounds"/> of the specified <paramref name="bitmap"/>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="bitmap"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="bitmap"/> has not been locked for write access.</exception>
            <remarks><para>
            <b>Clear</b> sets all pixels within the specified <paramref name="bounds"/> of the
            specified <paramref name="bitmap"/> to the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/>
            representation of the specified <paramref name="color"/>. No coordinate checking is
            performed.
            </para><note type="caution">
            For improved performance, <b>Clear</b> does not attempt to lock the specified <paramref name="bitmap"/>. You must explicitly call <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Lock"/> and <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Unlock"/> before and after manipulating the <paramref name="bitmap"/>, respectively.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.ColorFromPbgra32(System.UInt32)">
            <summary>
            Converts the specified <see cref="T:System.UInt32"/> value in <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/>
            format to the corresponding <paramref name="Color"/>.</summary>
            <param name="value">
            The <see cref="T:System.UInt32"/> value to convert.</param>
            <returns>
            The <see cref="T:System.Windows.Media.Color"/> that is equivalent to the specified <paramref name="value"/>
            when interpreted in the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format.</returns>
            <remarks><para>
            <b>ColorFromPbgra32</b> assumes that the specified <paramref name="value"/> contains
            premultiplied color channels according to the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format.
            <b>ColorFromPbgra32</b> undos the premultiplication of the red, green, and blue channels
            with the alpha channel, and then creates a <see cref="T:System.Windows.Media.Color"/> value from the resulting
            <see cref="T:System.Byte"/> values.
            </para><note type="caution">
            The premultiplication of <see cref="T:System.Byte"/> values greatly reduces color accuracy at
            high transparency levels since many color channels will be mapped to zero.
            <b>ColorFromPbgra32</b> cannot recreate the original color in such cases.
            </note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.ColorToOpaquePbgra32(System.Windows.Media.Color)">
            <summary>
            Converts the specified <paramref name="Color"/> to its <see cref="T:System.UInt32"/>
            representation in <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format, ignoring its alpha channel.
            </summary>
            <param name="color">
            The <see cref="T:System.Windows.Media.Color"/> value to convert.</param>
            <returns>
            An <see cref="T:System.UInt32"/> value containing the specified <paramref name="color"/>
            converted to <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format with full opacity.</returns>
            <remarks><para>
            <b>ColorToOpaquePbgra32</b> creates an <see cref="T:System.UInt32"/> value from the red, green,
            and blue channels of the specified <paramref name="color"/>, ordered according to the
            <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format.
            </para><para>
            <b>ColorToOpaquePbgra32</b> ignores the alpha channel of the specified <paramref name="color"/>. The corresponding <see cref="T:System.Byte"/> in the returned <see cref="T:System.UInt32"/> value is always set to 255.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.ColorToPbgra32(System.Windows.Media.Color)">
            <summary>
            Converts the specified <paramref name="Color"/> to its <see cref="T:System.UInt32"/>
            representation in <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format.</summary>
            <param name="color">
            The <see cref="T:System.Windows.Media.Color"/> value to convert.</param>
            <returns>
            An <see cref="T:System.UInt32"/> value containing the specified <paramref name="color"/>
            converted to <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format.</returns>
            <remarks>
            <b>ColorToPbgra32</b> premultiplies the red, green, and blue channels of the specified
            <paramref name="color"/> with the alpha channel, and then creates an <see cref="T:System.UInt32"/> value from the resulting <see cref="T:System.Byte"/> values ordered according to
            the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.GetPixel(System.Windows.Media.Imaging.WriteableBitmap,System.Int32,System.Int32)">
            <summary>
            Gets the <see cref="T:System.Windows.Media.Color"/> of the specified pixel in the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/>.</summary>
            <param name="bitmap">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> containing the pixel whose color to get.</param>
            <param name="x">
            The x-coordinate of the pixel whose <see cref="T:System.Windows.Media.Color"/> to return.</param>
            <param name="y">
            The y-coordinate of the pixel whose <see cref="T:System.Windows.Media.Color"/> to return.</param>
            <returns>
            The <see cref="T:System.Windows.Media.Color"/> of the pixel at the specified location in the specified
            <paramref name="bitmap"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="bitmap"/> is a null reference.</exception>
            <remarks>
            <b>GetPixel</b> returns the <see cref="T:System.Windows.Media.Color"/> equivalent of the pixel at the specified
            <paramref name="x"/> and <paramref name="y"/> coordinates within the <see cref="P:System.Windows.Media.Imaging.WriteableBitmap.BackBuffer"/> of the specified <paramref name="bitmap"/>. No
            coordinate checking is performed.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.Grow(System.Windows.Media.Imaging.RenderTargetBitmap@,System.Int32,System.Int32,System.Double,System.Double)">
            <overloads>
            Grows the specified bitmap to the specified size.</overloads>
            <summary>
            Grows the specified <see cref="T:System.Windows.Media.Imaging.RenderTargetBitmap"/> to the specified size.</summary>
            <param name="bitmap">
            The <see cref="T:System.Windows.Media.Imaging.RenderTargetBitmap"/> to grow. This argument may be a null reference.
            </param>
            <param name="width">
            The new minimum <see cref="P:System.Windows.Media.Imaging.BitmapSource.PixelWidth"/> for the specified <paramref name="bitmap"/>.</param>
            <param name="height">
            The new minimum <see cref="P:System.Windows.Media.Imaging.BitmapSource.PixelWidth"/> for the specified <paramref name="bitmap"/>.</param>
            <param name="dpiX">
            The new <see cref="P:System.Windows.Media.Imaging.BitmapSource.DpiX"/> value for the specified <paramref name="bitmap"/> if it is reallocated.</param>
            <param name="dpiY">
            The new <see cref="P:System.Windows.Media.Imaging.BitmapSource.DpiY"/> value for the specified <paramref name="bitmap"/> if it is reallocated.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="width"/> or <paramref name="height"/> is zero or negative.</exception>
            <remarks><para>
            <b>Grow</b> sets the specified <paramref name="bitmap"/> argument to a new <see cref="T:System.Windows.Media.Imaging.RenderTargetBitmap"/> with the specified <paramref name="width"/> and <paramref name="height"/> if <paramref name="bitmap"/> is a null reference or its <see cref="P:System.Windows.Media.Imaging.BitmapSource.PixelWidth"/> or <see cref="P:System.Windows.Media.Imaging.BitmapSource.PixelHeight"/> properties
            are smaller than the specified <paramref name="width"/> or <paramref name="height"/>.
            Otherwise, the specified <paramref name="bitmap"/> remains unchanged.
            </para><para>
            The resolution of any newly allocated <see cref="T:System.Windows.Media.Imaging.RenderTargetBitmap"/> is set to the
            specified <paramref name="dpiX"/> and <paramref name="dpiY"/> values, and its <see cref="P:System.Windows.Media.Imaging.BitmapSource.Format"/> is always <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/>. Any existing
            <paramref name="bitmap"/> contents are lost.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.Grow(System.Windows.Media.Imaging.WriteableBitmap@,System.Int32,System.Int32,System.Double,System.Double)">
            <summary>
            Grows the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> to the specified size.</summary>
            <param name="bitmap">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> to grow. This argument may be a null reference.
            </param>
            <param name="width">
            The new minimum <see cref="P:System.Windows.Media.Imaging.BitmapSource.PixelWidth"/> for the specified <paramref name="bitmap"/>.</param>
            <param name="height">
            The new minimum <see cref="P:System.Windows.Media.Imaging.BitmapSource.PixelWidth"/> for the specified <paramref name="bitmap"/>.</param>
            <param name="dpiX">
            The new <see cref="P:System.Windows.Media.Imaging.BitmapSource.DpiX"/> value for the specified <paramref name="bitmap"/> if it is reallocated.</param>
            <param name="dpiY">
            The new <see cref="P:System.Windows.Media.Imaging.BitmapSource.DpiY"/> value for the specified <paramref name="bitmap"/> if it is reallocated.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="width"/> or <paramref name="height"/> is zero or negative.</exception>
            <remarks><para>
            <b>Grow</b> sets the specified <paramref name="bitmap"/> argument to a new <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> with the specified <paramref name="width"/> and <paramref name="height"/> if <paramref name="bitmap"/> is a null reference or its <see cref="P:System.Windows.Media.Imaging.BitmapSource.PixelWidth"/> or <see cref="P:System.Windows.Media.Imaging.BitmapSource.PixelHeight"/> properties
            are smaller than the specified <paramref name="width"/> or <paramref name="height"/>.
            Otherwise, the specified <paramref name="bitmap"/> remains unchanged.
            </para><para>
            The resolution of any newly allocated <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> is set to the
            specified <paramref name="dpiX"/> and <paramref name="dpiY"/> values. Its <see cref="P:System.Windows.Media.Imaging.BitmapSource.Format"/> is always <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/>, and its <see cref="P:System.Windows.Media.Imaging.BitmapSource.Palette"/> is always a null reference. Any existing <paramref name="bitmap"/> contents are lost.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.MakeOpaque(System.Windows.Media.Imaging.WriteableBitmap)">
            <overloads>
            Makes the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> fully opaque.</overloads>
            <summary>
            Makes the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> fully opaque.</summary>
            <param name="bitmap">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> whose pixels to make opaque.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="bitmap"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="bitmap"/> has not been locked for write access.</exception>
            <remarks><para>
            <b>MakeOpaque</b> replaces all pixels within the specified <paramref name="bitmap"/>
            with their <see cref="M:Tektosyne.Windows.BitmapUtility.OpaquePbgra32(System.UInt32)"/> equivalents. Fully transparent pixels remain
            unchanged.
            </para><note type="caution">
            For improved performance, <b>MakeOpaque</b> does not attempt to lock the specified
            <paramref name="bitmap"/>. You must explicitly call <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Lock"/>
            and <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Unlock"/> before and after manipulating the <paramref name="bitmap"/>, respectively.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.MakeOpaque(System.Windows.Media.Imaging.WriteableBitmap,System.Drawing.Rectangle)">
            <summary>
            Makes the specified rectangle within the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> fully
            opaque.</summary>
            <param name="bitmap">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> whose pixels to make opaque.</param>
            <param name="bounds">
            The pixel rectangle within the specified <paramref name="bitmap"/> to make opaque.
            </param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="bitmap"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="bitmap"/> has not been locked for write access.</exception>
            <remarks><para>
            <b>MakeOpaque</b> replaces all pixels within the specified <paramref name="bounds"/> in
            the specified <paramref name="bitmap"/> with their <see cref="M:Tektosyne.Windows.BitmapUtility.OpaquePbgra32(System.UInt32)"/>
            equivalents. Fully transparent pixels remain unchanged. No coordinate checking is
            performed.
            </para><note type="caution">
            For improved performance, <b>MakeOpaque</b> does not attempt to lock the specified
            <paramref name="bitmap"/>. You must explicitly call <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Lock"/>
            and <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Unlock"/> before and after manipulating the <paramref name="bitmap"/>, respectively.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.MakeTransparent(System.Windows.Media.Imaging.WriteableBitmap,System.Windows.Media.Color)">
            <summary>
            Makes the specified <see cref="T:System.Windows.Media.Color"/> transparent in the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/>.</summary>
            <param name="bitmap">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> whose pixels to make transparent.</param>
            <param name="color">
            The <see cref="T:System.Windows.Media.Color"/> to replace with transparent black.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="bitmap"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="bitmap"/> has not been locked for write access.</exception>
            <remarks><para>
            <b>MakeTransparent</b> sets all fully opaque pixels of the specified <paramref name="color"/> within the specified <paramref name="bitmap"/> to zero, which is the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> equivalent of transparent black color. Partially
            transparent pixels and pixels of any other color remain unchanged.
            </para><para>
            <b>MakeTransparent</b> ignores the alpha channel of the specified <paramref name="color"/> and only replaces fully opaque pixels because the imprecision caused by
            the premultiplication of color channels in the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format
            would otherwise produce false matches.
            </para><note type="implementnotes">
            The predefined <see cref="P:System.Windows.Media.Colors.Transparent"/> color is transparent <em>white</em> (all
            color channels maximized), not transparent <em>black</em> (all color channels zero).
            That color is not representable in <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format since all
            color channel information of fully transparent color is lost.
            </note><note type="caution">
            For improved performance, <b>MakeTransparent</b> does not attempt to lock the specified
            <paramref name="bitmap"/>. You must explicitly call <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Lock"/>
            and <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Unlock"/> before and after manipulating the <paramref name="bitmap"/>, respectively.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.OpaquePbgra32(System.UInt32)">
            <summary>
            Makes the specified <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> color value fully opaque.
            </summary>
            <param name="value">
            The <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> color value to make opaque.</param>
            <returns><para>
            The specified <paramref name="value"/> if its alpha channel is zero or 255.
            </para><para>-or-</para><para>
            A new <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> color value with an alpha channel of 255 and
            the unpremultiplied color channels of the specified <paramref name="value"/>.
            </para></returns>
            <remarks><para>
            <b>OpaquePbgra32</b> returns a fully transparent <paramref name="value"/> unchanged 
            since there is no way to restore the original color channels in this case. Obviously, a
            fully opaque <paramref name="value"/> is also returned unchanged.
            </para><para>
            Otherwise, <b>OpaquePbgra32</b> reverts the color channel premultiplication that the
            <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format requires for non-opaque colors, and sets the
            alpha channel of the returned color value to 255.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.Overlay(System.Windows.Media.Imaging.WriteableBitmap,System.Int32,System.Int32,System.Windows.Media.Imaging.WriteableBitmap,System.Drawing.Rectangle)">
            <overloads>
            Overlays pixel data from one specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> onto another.
            </overloads>
            <summary>
            Overlays pixel data from one specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> onto another, with
            alpha blending.</summary>
            <param name="target">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> that is the target of the overlay.</param>
            <param name="x">
            The x-coordinate where to begin writing in the specified <paramref name="target"/>.
            </param>
            <param name="y">
            The y-coordinate where to begin writing in the specified <paramref name="target"/>.
            </param>
            <param name="source">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> containing the rectangle to overlay.</param>
            <param name="bounds">
            The pixel rectangle within the specified <paramref name="source"/> to overlay.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="target"/> or <paramref name="source"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="target"/> has not been locked for write access.</exception>
            <remarks><para>
            <b>Overlay</b> blends all pixels within the specified <paramref name="bounds"/> of the
            specified <paramref name="source"/> bitmap with the corresponding pixels within the
            specified <paramref name="target"/> bitmap, starting with the specified <paramref name="x"/> and <paramref name="y"/> coordinates.
            </para><para>
            <b>Overlay</b> calls <see cref="M:Tektosyne.Windows.BitmapUtility.BlendPbgra32(System.UInt32,System.UInt32)"/> to perform alpha blending between the
            <paramref name="source"/> (acting as the overlay) and the <paramref name="target"/>
            (acting as the blending target). No coordinate checking is performed.
            </para><note type="caution">
            For improved performance, <b>Overlay</b> does not attempt to lock the specified
            <paramref name="target"/>. You must explicitly call <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Lock"/>
            and <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Unlock"/> before and after manipulating the <paramref name="target"/> bitmap, respectively.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.Overlay(System.Windows.Media.Imaging.WriteableBitmap,System.Int32,System.Int32,System.Windows.Media.Imaging.WriteableBitmap,System.Drawing.Rectangle,System.Byte)">
            <summary>
            Overlays pixel data from one specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> onto another, with
            the specified alpha channel threshold.</summary>
            <param name="target">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> that is the target of the overlay.</param>
            <param name="x">
            The x-coordinate where to begin writing in the specified <paramref name="target"/>.
            </param>
            <param name="y">
            The y-coordinate where to begin writing in the specified <paramref name="target"/>.
            </param>
            <param name="source">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> containing the rectangle to overlay.</param>
            <param name="bounds">
            The pixel rectangle within the specified <paramref name="source"/> to overlay.</param>
            <param name="alpha">
            The alpha channel threshold below which <paramref name="source"/> pixels will be
            ignored.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="target"/> or <paramref name="source"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="target"/> has not been locked for write access.</exception>
            <remarks><para>
            <b>Overlay</b> copies only those pixels within the specified <paramref name="bounds"/>
            of the specified <paramref name="source"/> bitmap whose alpha channel meets or exceeds
            the specified <paramref name="alpha"/> threshold.
            </para><para>
            The copies are written to the pixels of the specified <paramref name="target"/> bitmap,
            starting with the specified <paramref name="x"/> and <paramref name="y"/> coordinates.
            No alpha blending or coordinate checking is performed.
            </para><note type="caution">
            For improved performance, <b>Overlay</b> does not attempt to lock the specified
            <paramref name="target"/>. You must explicitly call <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Lock"/>
            and <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Unlock"/> before and after manipulating the <paramref name="target"/> bitmap, respectively.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.Overlay(System.Windows.Media.Imaging.WriteableBitmap,System.Int32,System.Int32,System.Windows.Media.Imaging.WriteableBitmap,System.Drawing.Rectangle,System.Windows.Media.Color)">
            <summary>
            Overlays pixel data from one specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> onto another, with
            alpha blending and color substitution.</summary>
            <param name="target">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> that is the target of the overlay.</param>
            <param name="x">
            The x-coordinate where to begin writing in the specified <paramref name="target"/>.
            </param>
            <param name="y">
            The y-coordinate where to begin writing in the specified <paramref name="target"/>.
            </param>
            <param name="source">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> containing the rectangle to overlay.</param>
            <param name="bounds">
            The pixel rectangle within the specified <paramref name="source"/> to overlay.</param>
            <param name="color">
            The <see cref="T:System.Windows.Media.Color"/> to substitute for all <paramref name="source"/> pixels.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="target"/> or <paramref name="source"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="target"/> has not been locked for write access.</exception>
            <remarks><para>
            <b>Overlay</b> blends all pixels within the specified <paramref name="bounds"/> of the
            specified <paramref name="source"/> bitmap with the corresponding pixels within the
            specified <paramref name="target"/> bitmap, starting with the specified <paramref name="x"/> and <paramref name="y"/> coordinates.
            </para><para>
            <b>Overlay</b> calls <see cref="M:Tektosyne.Windows.BitmapUtility.BlendPbgra32(System.UInt32,System.UInt32)"/> to perform alpha blending between the
            <paramref name="source"/> (acting as the overlay) and the <paramref name="target"/>
            (acting as the blending target). No coordinate checking is performed.
            </para><para>
            <b>Overlay</b> substitutes the specified <paramref name="color"/> for the actual color
            channels of each <paramref name="source"/> pixel, while using its alpha channel to
            govern alpha blending with the corresponding <paramref name="target"/> pixel. The alpha
            channel of the specified <paramref name="color"/> is ignored.
            </para><note type="caution">
            For improved performance, <b>Overlay</b> does not attempt to lock the specified
            <paramref name="target"/>. You must explicitly call <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Lock"/>
            and <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Unlock"/> before and after manipulating the <paramref name="target"/> bitmap, respectively.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.Read(System.Windows.Media.Imaging.WriteableBitmap,System.Int32,System.Int32,System.Windows.Media.Imaging.BitmapSource)">
            <overloads>
            Reads pixel data from the specified <see cref="T:System.Windows.Media.Imaging.BitmapSource"/> into the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/>.</overloads>
            <summary>
            Reads all pixel data from the specified <see cref="T:System.Windows.Media.Imaging.BitmapSource"/> into the specified
            <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/>.</summary>
            <param name="target">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> whose pixels to overwrite.</param>
            <param name="x">
            The x-coordinate where to begin writing in the specified <paramref name="target"/>.
            </param>
            <param name="y">
            The y-coordinate where to begin writing in the specified <paramref name="target"/>.
            </param>
            <param name="source">
            The <see cref="T:System.Windows.Media.Imaging.BitmapSource"/> containing the pixels to read, in <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="target"/> or <paramref name="source"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="target"/> has not been locked for write access.</exception>
            <remarks><para>
            <b>Read</b> copies all pixels within the specified <paramref name="source"/> bitmap to
            the specified <paramref name="target"/> bitmap, starting with the specified <paramref name="x"/> and <paramref name="y"/> coordinates. 
            </para><para>
            The width and height of the copied pixel rectangle is restricted either to the total
            area of the <paramref name="source"/> bitmap, or to the area between the specified
            <paramref name="x"/> and <paramref name="y"/> coordinates and the lower-right corner of
            the <paramref name="target"/> bitmap, whichever is smaller.
            </para><note type="caution">
            For improved performance, <b>Read</b> does not attempt to lock the specified <paramref name="target"/>. You must explicitly call <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Lock"/> and <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Unlock"/> before and after manipulating the <paramref name="target"/> bitmap, respectively.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.Read(System.Windows.Media.Imaging.WriteableBitmap,System.Int32,System.Int32,System.Windows.Media.Imaging.BitmapSource,System.Drawing.Rectangle)">
            <summary>
            Reads all pixel data within the specified rectangle from the specified <see cref="T:System.Windows.Media.Imaging.BitmapSource"/> into the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/>.</summary>
            <param name="target">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> whose pixels to overwrite.</param>
            <param name="x">
            The x-coordinate where to begin writing in the specified <paramref name="target"/>.
            </param>
            <param name="y">
            The y-coordinate where to begin writing in the specified <paramref name="target"/>.
            </param>
            <param name="source">
            The <see cref="T:System.Windows.Media.Imaging.BitmapSource"/> containing the pixels to read, in <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format.</param>
            <param name="bounds">
            The pixel rectangle within the specified <paramref name="source"/> to read.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="target"/> or <paramref name="source"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="target"/> has not been locked for write access.</exception>
            <remarks><para>
            <b>Read</b> copies all pixels within the specified <paramref name="bounds"/> of the
            specified <paramref name="source"/> bitmap to the specified <paramref name="target"/>
            bitmap, starting with the specified <paramref name="x"/> and <paramref name="y"/>
            coordinates. No coordinate checking is performed.
            </para><note type="caution">
            For improved performance, <b>Read</b> does not attempt to lock the specified <paramref name="target"/>. You must explicitly call <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Lock"/> and <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Unlock"/> before and after manipulating the <paramref name="target"/> bitmap, respectively.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.Read(System.Windows.Media.Imaging.WriteableBitmap,System.Int32,System.Int32,System.Windows.Media.Imaging.WriteableBitmap,System.Drawing.Rectangle,System.Boolean,System.Boolean)">
            <summary>
            Reads all pixel data within the specified rectangle from the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> into the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/>, with optional
            axis mirroring.</summary>
            <param name="target">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> whose pixels to overwrite.</param>
            <param name="x">
            The x-coordinate where to begin writing in the specified <paramref name="target"/>.
            </param>
            <param name="y">
            The y-coordinate where to begin writing in the specified <paramref name="target"/>.
            </param>
            <param name="source">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> containing the pixels to read, in <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format.</param>
            <param name="bounds">
            The pixel rectangle within the specified <paramref name="source"/> to read.</param>
            <param name="mirrorX">
            <c>true</c> to mirror the pixels within the specified <paramref name="bounds"/> along
            the horizontal axis; <c>false</c> to leave the horizontal axis unchanged.</param>
            <param name="mirrorY">
            <c>true</c> to mirror the pixels within the specified <paramref name="bounds"/> along
            the vertical axis; <c>false</c> to leave the vertical axis unchanged.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="target"/> or <paramref name="source"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="target"/> has not been locked for write access.</exception>
            <remarks><para>
            <b>Read</b> copies all pixels within the specified <paramref name="bounds"/> of the
            specified <paramref name="source"/> bitmap to the specified <paramref name="target"/>
            bitmap, starting with the specified <paramref name="x"/> and <paramref name="y"/>
            coordinates. No coordinate checking is performed.
            </para><note type="caution">
            For improved performance, <b>Read</b> does not attempt to lock the specified <paramref name="target"/>. You must explicitly call <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Lock"/> and <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Unlock"/> before and after manipulating the <paramref name="target"/> bitmap, respectively.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapUtility.SetPixel(System.Windows.Media.Imaging.WriteableBitmap,System.Int32,System.Int32,System.Windows.Media.Color)">
            <summary>
            Sets the specified pixel in the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> to the specified
            <see cref="T:System.Windows.Media.Color"/>.</summary>
            <param name="bitmap">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> containing the pixel whose color to set.</param>
            <param name="x">
            The x-coordinate of the pixel to change to <paramref name="color"/>.</param>
            <param name="y">
            The y-coordinate of the pixel to change to <paramref name="color"/>.</param>
            <param name="color">
            The new <see cref="T:System.Windows.Media.Color"/> for the pixel at the specified location in the specified
            <paramref name="bitmap"/>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="bitmap"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="bitmap"/> has not been locked for write access.</exception>
            <remarks><para>
            <b>SetPixel</b> sets the pixel at the specified <paramref name="x"/> and <paramref name="y"/> coordinates within the <see cref="P:System.Windows.Media.Imaging.WriteableBitmap.BackBuffer"/> of the
            specified <paramref name="bitmap"/> to the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/>
            representation of the specified <paramref name="color"/>. No alpha blending or
            coordinate checking is performed.
            </para><note type="caution">
            For improved performance, <b>SetPixel</b> does not attempt to lock the specified
            <paramref name="bitmap"/>. You must explicitly call <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Lock"/>
            and <see cref="M:System.Windows.Media.Imaging.WriteableBitmap.Unlock"/> before and after manipulating the <paramref name="bitmap"/>, respectively.</note></remarks>
        </member>
        <member name="T:Tektosyne.Net.MapiException">
            <summary>
            The exception that is thrown when an error occurs while using the MAPI or Simple MAPI e-mail
            protocols.</summary>
            <remarks>
            <b>MapiException</b> is thrown when an error occurs within a method of class <see cref="T:Tektosyne.Net.MapiMail"/>, which provides a wrapper for the Win32 API calls defined in the <see cref="T:Tektosyne.Win32Api.Mapi"/> class.</remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiException.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Net.MapiException"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Net.MapiException"/> class with default
            properties.</summary>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.Net.MapiException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:Tektosyne.Net.MapiException.Code"/></term>
            <description><see cref="F:Tektosyne.Win32Api.MapiError.SUCCESS_SUCCESS"/> (zero).</description>
            </item><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:System.Exception.Message"/></term>
            <description>A localized message indicating a successful operation.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Net.MapiException"/> class with the specified
            error message.</summary>
            <param name="message">
            An error message that specifies the reason for the exception.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.Net.MapiException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:Tektosyne.Net.MapiException.Code"/></term>
            <description><see cref="F:Tektosyne.Win32Api.MapiError.SUCCESS_SUCCESS"/> (zero).</description>
            </item><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:System.Exception.Message"/></term>
            <description>The specified <paramref name="message"/>.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Net.MapiException"/> class with the specified
            error message and with the previous exception that is the cause of this <see cref="T:Tektosyne.Net.MapiException"/>.</summary>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <param name="innerException">
            The previous <see cref="T:System.Exception"/> that is the cause of the current <see cref="T:Tektosyne.Net.MapiException"/>.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.Net.MapiException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:Tektosyne.Net.MapiException.Code"/></term>
            <description><see cref="F:Tektosyne.Win32Api.MapiError.SUCCESS_SUCCESS"/> (zero).</description>
            </item><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>The specified <paramref name="innerException"/>.</description>
            </item><item>
            <term><see cref="P:System.Exception.Message"/></term>
            <description>The specified <paramref name="message"/>.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiException.#ctor(Tektosyne.Win32Api.MapiError)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Net.MapiException"/> class with the specified
            MAPI error code.</summary>
            <param name="code">
            The code of the MAPI or Simple MAPI error that caused the exception.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.Net.MapiException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:Tektosyne.Net.MapiException.Code"/></term>
            <description>The specified <paramref name="code"/> which should be one of the error
            codes defined in <see cref="T:Tektosyne.Win32Api.MapiError"/>.</description>
            </item><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:System.Exception.Message"/></term>
            <description>A localized description of the specified <paramref name="code"/>, followed
            by the numerical <paramref name="code"/> itself.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiException.#ctor(Tektosyne.Win32Api.MapiError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Net.MapiException"/> class with the specified
            error message and MAPI error code.</summary>
            <param name="code">
            The code of the MAPI or Simple MAPI error that caused the exception.</param>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.Net.MapiException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:Tektosyne.Net.MapiException.Code"/></term>
            <description>The specified <paramref name="code"/> which should be one of the error
            codes defined in <see cref="T:Tektosyne.Win32Api.MapiError"/>.</description>
            </item><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:System.Exception.Message"/></term>
            <description>The specified <paramref name="message"/>.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiException.#ctor(Tektosyne.Win32Api.MapiError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Net.MapiException"/> class with the specified
            error message and MAPI error code, and with the previous exception that is the cause of
            this <see cref="T:Tektosyne.Net.MapiException"/>.</summary>
            <param name="code">
            The code of the MAPI or Simple MAPI error that caused the exception.</param>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <param name="innerException">
            The previous <see cref="T:System.Exception"/> that is the cause of the current <see cref="T:Tektosyne.Net.MapiException"/>.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.Net.MapiException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:Tektosyne.Net.MapiException.Code"/></term>
            <description>The specified <paramref name="code"/> which should be one of the error
            codes defined in <see cref="T:Tektosyne.Win32Api.MapiError"/>.</description>
            </item><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>The specified <paramref name="innerException"/>.</description>
            </item><item>
            <term><see cref="P:System.Exception.Message"/></term>
            <description>The specified <paramref name="message"/>.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Net.MapiException"/> class with serialized
            data.</summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> object providing serialized object data for the <see cref="T:Tektosyne.Net.MapiException"/>.</param>
            <param name="context">
            A <see cref="T:System.Runtime.Serialization.StreamingContext"/> object containing contextual information about the
            source or destination.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="info"/> is a null reference.</exception>
            <remarks><para>
            Please refer to <see cref="M:System.Exception.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"/> for
            details.
            </para><para>
            The value of the <see cref="P:Tektosyne.Net.MapiException.Code"/> property is deserialized from an additional field,
            named "Code".</para></remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> object with the data needed to serialize the
            exception.</summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> object that receives the serialized object data of
            the <see cref="T:Tektosyne.Net.MapiException"/>.</param>
            <param name="context">
            A <see cref="T:System.Runtime.Serialization.StreamingContext"/> object containing contextual information about the
            source or destination.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="info"/> is a null reference.</exception>
            <remarks><para>
            The value of the <see cref="P:Tektosyne.Net.MapiException.Code"/> property is serialized to an additional field, named
            "Code".</para></remarks>
        </member>
        <member name="P:Tektosyne.Net.MapiException.Abort">
            <summary>
            Gets the <see cref="P:Tektosyne.Net.MapiException.Code"/> that is set when the user aborted the current MAPI
            operation.</summary>
            <value>
            The constant value <see cref="F:Tektosyne.Win32Api.MapiError.MAPI_E_USER_ABORT"/>.</value>
            <remarks>
            When the user aborts a MAPI operation, the <see cref="T:Tektosyne.Net.MapiMail"/> methods communicate
            this fact back to the client by throwing a <see cref="T:Tektosyne.Net.MapiException"/> whose <see cref="P:Tektosyne.Net.MapiException.Code"/> is <see cref="F:Tektosyne.Win32Api.MapiError.MAPI_E_USER_ABORT"/>. <b>Abort</b>
            provides a convenient shortcut for this value.</remarks>
        </member>
        <member name="P:Tektosyne.Net.MapiException.Code">
            <summary>
            Gets the MAPI error code of the exception.</summary>
            <value>
            The code of the MAPI or Simple MAPI error that caused the <see cref="T:Tektosyne.Net.MapiException"/>.
            </value>
            <remarks>
            <see cref="T:Tektosyne.Net.MapiException"/> objects are usually thrown in response to MAPI errors.
            <b>Code</b> is one of the error codes defined in <see cref="T:Tektosyne.Win32Api.MapiError"/> which
            are identical to the constants defined in file MAPICode.h of the Win32 Platform SDK.
            </remarks>
        </member>
        <member name="T:Tektosyne.EventArgs`1">
            <summary>
            Provides an event argument that contains a single arbitrary value.</summary>
            <typeparam name="T">
            The type of the <see cref="P:Tektosyne.EventArgs`1.Value"/> transmitted by the event.</typeparam>
            <remarks>
            <b>EventArgs</b> extends the standard <see cref="T:System.EventArgs"/> class to allow the
            transmission of a single arbitrary value when an event is raised.</remarks>
        </member>
        <member name="M:Tektosyne.EventArgs`1.#ctor(`0)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.EventArgs`1"/> class with the specified
            value.</summary>
            <param name="value">
            The initial value for the <see cref="P:Tektosyne.EventArgs`1.Value"/> property.</param>
        </member>
        <member name="M:Tektosyne.EventArgs`1.ToString">
            <summary>
            Returns a <see cref="T:System.String"/> that represents the <see cref="T:Tektosyne.EventArgs`1"/> object.
            </summary>
            <returns>
            A <see cref="T:System.String"/> containing the culture-invariant string representations of the
            instance type <typeparamref name="T"/> and of the <see cref="P:Tektosyne.EventArgs`1.Value"/> property.
            </returns>
        </member>
        <member name="P:Tektosyne.EventArgs`1.Value">
            <summary>
            Gets the value transmitted by the event.</summary>
            <value>
            The value supplied to the constructor of this <see cref="T:Tektosyne.EventArgs`1"/> object.</value>
        </member>
        <member name="T:Tektosyne.Geometry.Compass">
            <summary>
            Specifies the eight major compass directions.</summary>
            <remarks><para>
            <b>Compass</b> specifies the four cardinal directions of the compass, and the four ordinal
            directions halfway between the cardinal points.
            </para><para>
            Each <b>Compass</b> direction is assigned an <see cref="T:System.Int32"/> value that equals its 
            compass angle, starting with zero degrees for <see cref="F:Tektosyne.Geometry.Compass.North"/> and continuing
            clockwise in 45 degree increments.</para></remarks>
        </member>
        <member name="F:Tektosyne.Geometry.Compass.North">
            <summary>Specifies zero degrees.</summary>
        </member>
        <member name="F:Tektosyne.Geometry.Compass.NorthEast">
            <summary>Specifies 45 degrees.</summary>
        </member>
        <member name="F:Tektosyne.Geometry.Compass.East">
            <summary>Specifies 90 degrees.</summary>
        </member>
        <member name="F:Tektosyne.Geometry.Compass.SouthEast">
            <summary>Specifies 135 degrees.</summary>
        </member>
        <member name="F:Tektosyne.Geometry.Compass.South">
            <summary>Specifies 180 degrees.</summary>
        </member>
        <member name="F:Tektosyne.Geometry.Compass.SouthWest">
            <summary>Specifies 225 degrees.</summary>
        </member>
        <member name="F:Tektosyne.Geometry.Compass.West">
            <summary>Specifies 270 degrees.</summary>
        </member>
        <member name="F:Tektosyne.Geometry.Compass.NorthWest">
            <summary>Specifies 315 degrees.</summary>
        </member>
        <member name="T:Tektosyne.Win32Api.MapiMessageFlags">
            <summary>
            Defines status flags for MAPI messages.</summary>
            <remarks>
            <b>MapiMessageFlags</b> defines all possible values for the <see cref="F:Tektosyne.Win32Api.MapiMessage.flFlags"/> field of the <see cref="T:Tektosyne.Win32Api.MapiMessage"/> structure. Bitwise
            combinations are possible.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessageFlags.MAPI_UNREAD">
            <summary>
            Indicates that the message has not been read.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessageFlags.MAPI_RECEIPT_REQUESTED">
            <summary>
            Indicates that a receipt notification is requested.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessageFlags.MAPI_SENT">
            <summary>
            Indicates that the message has been sent.</summary>
        </member>
        <member name="T:Tektosyne.Strings">
            <summary>
              A strongly-typed resource class, for looking up localized strings, etc.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ResourceManager">
            <summary>
              Returns the cached ResourceManager instance used by this class.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.Culture">
            <summary>
              Overrides the current thread's CurrentUICulture property for all
              resource lookups using this strongly typed resource class.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ActualValue">
            <summary>
              Looks up a localized string similar to Actual value was {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentConflict">
            <summary>
              Looks up a localized string similar to Argument conflicts with value of {0} argument..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentContainsDifferent">
            <summary>
              Looks up a localized string similar to Argument cannot contain object with different {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentContainsEmpty">
            <summary>
              Looks up a localized string similar to Argument cannot contain an empty {0} object..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentContainsNegative">
            <summary>
              Looks up a localized string similar to Argument cannot contain negative values..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentContainsNotPositive">
            <summary>
              Looks up a localized string similar to Argument must contain positive values..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentContainsNull">
            <summary>
              Looks up a localized string similar to Argument cannot contain a null reference..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentContainsNullKey">
            <summary>
              Looks up a localized string similar to Argument cannot contain a key that is a null reference..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentContainsNullOrEmpty">
            <summary>
              Looks up a localized string similar to Argument cannot contain a null reference or an empty object..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentCoordinatesInvalid">
            <summary>
              Looks up a localized string similar to Argument must specify valid coordinates..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentEquals">
            <summary>
              Looks up a localized string similar to Argument cannot equal {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentFalse">
            <summary>
              Looks up a localized string similar to Argument cannot be false..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentGreaterAndLess">
            <summary>
              Looks up a localized string similar to Argument cannot be greater than {0} and less than {1}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentGreaterValue">
            <summary>
              Looks up a localized string similar to Argument cannot be greater than {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentInCollection">
            <summary>
              Looks up a localized string similar to Argument already exists in collection..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentLessOrGreater">
            <summary>
              Looks up a localized string similar to Argument cannot be less than {0} or greater than {1}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentLessValue">
            <summary>
              Looks up a localized string similar to Argument cannot be less than {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentMultidimensional">
            <summary>
              Looks up a localized string similar to Argument cannot be multidimensional..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNegative">
            <summary>
              Looks up a localized string similar to Argument cannot be negative..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNotDivisible">
            <summary>
              Looks up a localized string similar to Argument must be divisible by {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNotEquals">
            <summary>
              Looks up a localized string similar to Argument must equal {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNotGreaterValue">
            <summary>
              Looks up a localized string similar to Argument must be greater than {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNotInCollection">
            <summary>
              Looks up a localized string similar to Argument was not found in collection..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNotInTypes">
            <summary>
              Looks up a localized string similar to Argument must be one of these types: .
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNotInValues">
            <summary>
              Looks up a localized string similar to Argument must have one of these values: .
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNotLessLength">
            <summary>
              Looks up a localized string similar to Argument must be less than array length..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNotLessValue">
            <summary>
              Looks up a localized string similar to Argument must be less than {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNotNegative">
            <summary>
              Looks up a localized string similar to Argument must be negative..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNotNeighbor">
            <summary>
              Looks up a localized string similar to Argument must specify a neighboring location..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNotNull">
            <summary>
              Looks up a localized string similar to Argument must be a null reference..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNotPositive">
            <summary>
              Looks up a localized string similar to Argument must be positive..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNotRooted">
            <summary>
              Looks up a localized string similar to Argument must be an absolute file path..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentNullOrEmpty">
            <summary>
              Looks up a localized string similar to Argument cannot be a null reference or an empty object..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentPositive">
            <summary>
              Looks up a localized string similar to Argument cannot be positive..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentPropertyConflict">
            <summary>
              Looks up a localized string similar to Argument conflicts with value of {0} property..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentPropertyInvalid">
            <summary>
              Looks up a localized string similar to Argument contains invalid {0} property..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentReadOnly">
            <summary>
              Looks up a localized string similar to Argument cannot be read-only..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentSectionLessCollection">
            <summary>
              Looks up a localized string similar to Argument section must be large enough for collection..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentSpecifiesInvalid">
            <summary>
              Looks up a localized string similar to Argument specifies invalid {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentTrue">
            <summary>
              Looks up a localized string similar to Argument cannot be true..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ArgumentTypeMismatch">
            <summary>
              Looks up a localized string similar to Argument must be of type {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.BooleanFlagUnclearable">
            <summary>
              Looks up a localized string similar to Value set to false, and Clearable is false..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ButtonAbort">
            <summary>
              Looks up a localized string similar to Abort.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ButtonCancel">
            <summary>
              Looks up a localized string similar to Cancel.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ButtonHelp">
            <summary>
              Looks up a localized string similar to Help.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ButtonIgnore">
            <summary>
              Looks up a localized string similar to Ignore.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ButtonNo">
            <summary>
              Looks up a localized string similar to No.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ButtonOK">
            <summary>
              Looks up a localized string similar to OK.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ButtonRetry">
            <summary>
              Looks up a localized string similar to Retry.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ButtonYes">
            <summary>
              Looks up a localized string similar to Yes.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.CollectionReadOnly">
            <summary>
              Looks up a localized string similar to Read-only collections cannot be modified..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.CollectionUnique">
            <summary>
              Looks up a localized string similar to Unique-element collections cannot contain duplicate elements..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ControlRangeError">
             <summary>
               Looks up a localized string similar to The current value is not between {0} and {1}, and
            will be replaced with {0} or {1} unless corrected..
             </summary>
        </member>
        <member name="P:Tektosyne.Strings.ControlRangeInfo">
            <summary>
              Looks up a localized string similar to Enter a value between {0} and {1}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.CtorNotSupported">
            <summary>
              Looks up a localized string similar to Construction of this type is not supported..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.DictionaryKey">
            <summary>
              Looks up a localized string similar to Dictionary key was {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.DictionaryKeyMismatch">
            <summary>
              Looks up a localized string similar to Dictionary key differs from object key..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.EnumeratorIndex">
            <summary>
              Looks up a localized string similar to Enumerator is not on a collection element..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.EnumeratorVersion">
            <summary>
              Looks up a localized string similar to Enumerator invalidated by modification to collection..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ErrorUnknown">
            <summary>
              Looks up a localized string similar to Unknown error..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ErrorXml">
            <summary>
              Looks up a localized string similar to XML error.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ErrorXmlSchema">
            <summary>
              Looks up a localized string similar to XML Schema error.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.FormatAtColumn">
            <summary>
              Looks up a localized string similar to , column {0}.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.FormatAtLine">
            <summary>
              Looks up a localized string similar to  at line {0}.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.FormatCode">
            <summary>
              Looks up a localized string similar to  (Code {0}).
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.IKeyedValueKey">
            <summary>
              Looks up a localized string similar to IKeyedValue key was {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.InformationMemory">
             <summary>
               Looks up a localized string similar to System physical: {0} of {1} MB available. 
            System virtual: {2} of {3} MB available. 
            Process memory: {4} of {5} MB available. .
             </summary>
        </member>
        <member name="P:Tektosyne.Strings.KeyNotFound">
            <summary>
              Looks up a localized string similar to Collection does not contain key {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiAccessDenied">
            <summary>
              Looks up a localized string similar to Access denied..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiAmbiguousRecipient">
            <summary>
              Looks up a localized string similar to Ambiguous recipient..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiAttachmentNotFound">
            <summary>
              Looks up a localized string similar to Attachment not found..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiAttachmentOpenFailure">
            <summary>
              Looks up a localized string similar to Attachment open failure..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiAttachmentWriteFailure">
            <summary>
              Looks up a localized string similar to Attachment write failure..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiBadRecipType">
            <summary>
              Looks up a localized string similar to Invalid recipient type..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiDiskFull">
            <summary>
              Looks up a localized string similar to Insufficient disk space..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiFailure">
            <summary>
              Looks up a localized string similar to Unspecified MAPI error..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiInsufficientMemory">
            <summary>
              Looks up a localized string similar to Insufficient memory..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiInvalidEditFields">
            <summary>
              Looks up a localized string similar to Invalid edit fields parameter..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiInvalidMessage">
            <summary>
              Looks up a localized string similar to Invalid message identifier..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiInvalidRecips">
            <summary>
              Looks up a localized string similar to One or more invalid recipients..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiInvalidSession">
            <summary>
              Looks up a localized string similar to Invalid MAPI session handle..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiLoginFailure">
            <summary>
              Looks up a localized string similar to MAPI login failure..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiMessageInUse">
            <summary>
              Looks up a localized string similar to Message in use..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiNetworkFailure">
            <summary>
              Looks up a localized string similar to Network failure..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiNoMessages">
            <summary>
              Looks up a localized string similar to No messages found..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiNotSupported">
            <summary>
              Looks up a localized string similar to Unsupported operation..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiTextTooLarge">
            <summary>
              Looks up a localized string similar to Message text too large..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiTooManyFiles">
            <summary>
              Looks up a localized string similar to Too many file attachments..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiTooManyRecipients">
            <summary>
              Looks up a localized string similar to Too many recipients..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiTooManySessions">
            <summary>
              Looks up a localized string similar to Too many MAPI sessions..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiTypeNotSupported">
            <summary>
              Looks up a localized string similar to Type not supported..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiUnknown">
            <summary>
              Looks up a localized string similar to Unknown error code..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiUnknownRecipient">
            <summary>
              Looks up a localized string similar to Unknown recipient..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MapiUserAbort">
            <summary>
              Looks up a localized string similar to User aborted operation..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MenuAlt">
            <summary>
              Looks up a localized string similar to Alt+.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MenuControl">
            <summary>
              Looks up a localized string similar to Ctrl+.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MenuShift">
            <summary>
              Looks up a localized string similar to Shift+.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.MethodInvalidValue">
            <summary>
              Looks up a localized string similar to Method {0} returned an invalid value..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyAbstract">
            <summary>
              Looks up a localized string similar to Property not implemented on abstract class..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyDerived">
            <summary>
              Looks up a localized string similar to Property not implemented on derived class..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyEmpty">
            <summary>
              Looks up a localized string similar to Property cannot be empty..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyFalse">
            <summary>
              Looks up a localized string similar to Property cannot be false..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyInvalidValue">
            <summary>
              Looks up a localized string similar to Property has an invalid value..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyIsInValues">
            <summary>
              Looks up a localized string similar to Property cannot have one of these values: .
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyIsValue">
            <summary>
              Looks up a localized string similar to Property cannot be {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyName">
            <summary>
              Looks up a localized string similar to Property name: {0}.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyNegative">
            <summary>
              Looks up a localized string similar to Property cannot be negative..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyNotDivisible">
            <summary>
              Looks up a localized string similar to Property must be divisible by {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyNotEmpty">
            <summary>
              Looks up a localized string similar to Property must be empty..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyNotInValues">
            <summary>
              Looks up a localized string similar to Property must have one of these values: .
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyNotNegative">
            <summary>
              Looks up a localized string similar to Property must be negative..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyNotNull">
            <summary>
              Looks up a localized string similar to Property must be a null reference..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyNotPositive">
            <summary>
              Looks up a localized string similar to Property must be positive..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyNotValue">
            <summary>
              Looks up a localized string similar to Property must be {0}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyNull">
            <summary>
              Looks up a localized string similar to Property cannot be a null reference..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyNullOrEmpty">
            <summary>
              Looks up a localized string similar to Property cannot be a null reference or an empty object..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyPositive">
            <summary>
              Looks up a localized string similar to Property cannot be positive..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertySet">
            <summary>
              Looks up a localized string similar to Property cannot be set..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertySetOnce">
            <summary>
              Looks up a localized string similar to Property cannot be set more than once..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.PropertyTrue">
            <summary>
              Looks up a localized string similar to Property cannot be true..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.SuccessSuccess">
            <summary>
              Looks up a localized string similar to Operation succeeded..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.SynchronizedNotImplemented">
            <summary>
              Looks up a localized string similar to Synchronized access is not implemented..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.TechnicalDetails">
            <summary>
              Looks up a localized string similar to Technical Details:.
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ThreadForeground">
            <summary>
              Looks up a localized string similar to Method cannot execute on foreground thread..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.TypeMemberNotFound">
            <summary>
              Looks up a localized string similar to Member {0} not found in type {1}..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.ViewReadOnly">
            <summary>
              Looks up a localized string similar to Read-only views cannot be modified..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.XmlContentNotElement">
            <summary>
              Looks up a localized string similar to Content node must be an element tag..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.XmlContentNotElementName">
            <summary>
              Looks up a localized string similar to Content node must be an element tag named &quot;{0}&quot;..
            </summary>
        </member>
        <member name="P:Tektosyne.Strings.XmlContentNotText">
            <summary>
              Looks up a localized string similar to Content node must be a simple text value..
            </summary>
        </member>
        <member name="T:Tektosyne.Geometry.Visibility">
            <summary>
            Provides a line-of-sight algorithm.</summary>
            <remarks><para>
            <b>Visibility</b> provides a general-purpose line-of-sight algorithm for arbitrary instances
            of the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> interface.
            </para><para>
            The visibility algorithm starts on a specified starting location and recursively finds any
            adjacent locations, up to a specified maximum range, whose line of sight is not blocked by
            locations on an earlier recursion level. The opacity of a given location is determined by a
            specified <see cref="T:System.Predicate`1"/> delegate.
            </para><para>
            For each tested location, we assume a circle with <see cref="P:Tektosyne.Geometry.IPlanarGraph.WorldNodeRadius"/>
            centered on its world coordinates, as determined by <see cref="M:Tektosyne.Geometry.IPlanarGraph.GraphToWorld(System.Drawing.Point)"/>.
            We then draw the two tangents from the source location's world coordinates to either side of
            that circle. An opaque location blocks visibility for the angle between its tangents,
            rounded to 360 degree steps. For each generation of <see cref="M:Tektosyne.Geometry.IPlanarGraph.GetNeighbors(System.Drawing.Point)"/>
            calls, we record the set of blocked angles. Any location in a future generation is
            considered invisible if more than half the angle between its tangents has been blocked.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Visibility.#ctor(Tektosyne.Geometry.IPlanarGraph)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.Visibility"/> class with the specified
            two-dimensional graph.</summary>
            <param name="graph">
            The <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> whose <see cref="P:Tektosyne.Geometry.IPlanarGraph.VisibilityGraph"/> is the
            initial value for the <see cref="P:Tektosyne.Geometry.Visibility.Graph"/> property.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="graph"/> is a null reference.</exception>
        </member>
        <member name="M:Tektosyne.Geometry.Visibility.FindVisible(System.Predicate{System.Drawing.Point},System.Drawing.Point,System.Int32)">
            <summary>
            Finds all contiguous locations within the specified maximum range that are visible from
            the specified location.</summary>
            <param name="isOpaque">
            The <see cref="T:System.Predicate`1"/> delegate that determines whether a location blocks
            the line of sight.</param>
            <param name="source">
            The coordinates of the starting location.</param>
            <param name="maxRange">
            The maximum total distance from the specified <paramref name="source"/> of any location
            that is considered visible.</param>
            <returns>
            <c>true</c> if one or more locations are visible from the specified <paramref name="source"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="isOpaque"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="maxRange"/> is zero or negative.</exception>
            <remarks><para>
            <b>FindVisible</b> returns <c>false</c> if the specified <paramref name="source"/>
            location is invalid, or if there are no contiguous visible locations.
            </para><para>
            Otherwise, <b>FindVisible</b> returns <c>true</c> and sets the <see cref="P:Tektosyne.Geometry.Visibility.Locations"/>
            property to the result of the visibility search.
            </para><para>
            All locations within the specified <paramref name="maxRange"/> are considered visible,
            except for those that are obscured by a location closer to <paramref name="source"/> for
            which <paramref name="isOpaque"/> succeeds.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Visibility.ExpandArea(System.Int32)">
            <summary>
            Expands the current visibility area with all visible locations within the specified
            range of the source location.</summary>
            <param name="range">
            The current distance from the source location to examine.</param>
            <remarks><para>
            <b>ExpandArea</b> recursively visits all contiguous locations that are visible from the
            source location, and adds them to the <see cref="P:Tektosyne.Geometry.Visibility.Locations"/> collection.
            </para><para>
            <b>ExpandArea</b> never revisits locations that were already added or rejected. The
            source location specified in the <see cref="M:Tektosyne.Geometry.Visibility.FindVisible(System.Predicate{System.Drawing.Point},System.Drawing.Point,System.Int32)"/> call is never added to the
            <b>Locations</b> collection.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Visibility.BlockAngle(System.Int32,System.Drawing.Point)">
            <summary>
            Blocks visibility of the specified angle for the specified generation.</summary>
            <param name="generation">
            The generation whose visibility data to manipulate.</param>
            <param name="angle">
            A <see cref="T:System.Drawing.Point"/> containing the starting point of the angle in the <see cref="P:System.Drawing.Point.X"/> coordinate and the ending point in the <see cref="P:System.Drawing.Point.Y"/>
            coordinate. Both coordinates must be in degrees, ranging from 0 to 359.</param>
        </member>
        <member name="M:Tektosyne.Geometry.Visibility.CheckAnyVisible(System.Int32)">
            <summary>
            Checks whether any angle is visible for the specified generation.</summary>
            <param name="generation">
            The generation whose visibility data to examine.</param>
            <returns>
            <c>true</c> if any angle is visible for the specified <paramref name="generation"/>;
            otherwise, <c>false</c>.</returns>
            <remarks>
            <b>CheckAnyVisible</b> is not currently used by <see cref="M:Tektosyne.Geometry.Visibility.ExpandArea(System.Int32)"/> because tests
            showed that the collection of visible nodes for the current generation is always
            exhausted before all 360 degrees of visibility are completely blocked.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Visibility.CountBlocked(System.Int32,System.Drawing.Point)">
            <summary>
            Counts the degrees whose visibility is blocked within the specified angle for the
            specified generation.</summary>
            <param name="generation">
            The generation whose visibility data to examine.</param>
            <param name="angle">
            A <see cref="T:System.Drawing.Point"/> containing the starting point of the angle in the <see cref="P:System.Drawing.Point.X"/> coordinate and the ending point in the <see cref="P:System.Drawing.Point.Y"/>
            coordinate. Both coordinates must be in degrees, ranging from 0 to 359.</param>
            <returns>
            A <see cref="T:System.Drawing.Point"/> containing the degrees whose visibility is blocked within the
            specified <paramref name="angle"/> in the <see cref="P:System.Drawing.Point.X"/> coordinate, and the
            total degrees in the <see cref="P:System.Drawing.Point.Y"/> coordinate.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.Visibility.GetAngle(System.Drawing.Point)">
            <summary>
            Computes the visibility angle covered by the specified location.</summary>
            <param name="target">
            The <see cref="P:Tektosyne.Geometry.Visibility.Graph"/> location whose visibility angle to compute.</param>
            <returns>
            A <see cref="T:System.Drawing.Point"/> containing the starting point of the angle in the <see cref="P:System.Drawing.Point.X"/> coordinate and the ending point in the <see cref="P:System.Drawing.Point.Y"/>
            coordinate. Both coordinates are in degrees, ranging from 0 to 359.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.Visibility.InitializeCollections(System.Int32)">
            <summary>
            Clears all result and intermediate collections, and sets their capacity to at least the
            specified value.</summary>
            <param name="capacity">
            The new minimum capacity for result and intermediate collections, where appropriate.
            </param>
        </member>
        <member name="M:Tektosyne.Geometry.Visibility.InitializeGeneration(System.Int32,System.Int32)">
            <summary>
            Initializes all intermediate collections for the specified generation, and sets their
            capacity to at least the specified value.</summary>
            <param name="generation">
            The generation whose collections to initialize.</param>
            <param name="capacity">
            The new minimum capacity for intermediate collections, where appropriate.</param>
        </member>
        <member name="M:Tektosyne.Geometry.Visibility.RadianToDegree(System.Double)">
            <summary>
            Converts the specified angle in radians to the equivalent normalized angle in degrees.
            </summary>
            <param name="radian">
            The angle in radians to convert.</param>
            <returns>
            The specified <paramref name="radian"/> converted to degrees and normalized to the
            interval [0, 360).</returns>
        </member>
        <member name="P:Tektosyne.Geometry.Visibility.Graph">
            <summary>
            Gets the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> on which all searches are performed.</summary>
            <value>
            An <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> object that defines the two-dimensional graph on which all
            searches are performed.</value>
            <remarks><para>
            <b>Graph</b> never returns a null reference. This property never changes once the object
            has been constructed.
            </para><para>
            To ensure that line-of-sight calculations can be performed, <b>Graph</b> holds the <see cref="P:Tektosyne.Geometry.IPlanarGraph.VisibilityGraph"/> of the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> supplied to the
            <see cref="T:Tektosyne.Geometry.Visibility"/> constructor. This is not necessarily the same object as the
            supplied <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> itself.</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Visibility.Locations">
            <summary>
            Gets a list of all locations that were reached by the last successful search.</summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.IList`1"/> containing the coordinates of all locations that
            were reached by the last successful call to <see cref="M:Tektosyne.Geometry.Visibility.FindVisible(System.Predicate{System.Drawing.Point},System.Drawing.Point,System.Int32)"/>, not including the
            source location.</value>
            <remarks>
            <b>Locations</b> never returns a null reference, but it returns an empty collection if
            the last call to <see cref="M:Tektosyne.Geometry.Visibility.FindVisible(System.Predicate{System.Drawing.Point},System.Drawing.Point,System.Int32)"/> returned <c>false</c>, or if the method has
            not yet been called.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Visibility.SkipOpaqueNeighbors">
            <summary>
            Gets or sets a value indicating whether the <see cref="T:Tektosyne.Geometry.Visibility"/> algorithm should
            skip the neighbors of opaque locations.</summary>
            <value>
            <c>true</c> if the neighbors of opaque locations should be skipped; otherwise,
            <c>false</c>. The default is <c>true</c>.</value>
            <remarks><para>
            <b>SkipOpaqueNeighbors</b> enables an optimization that can reduce the number of <see cref="M:Tektosyne.Geometry.IPlanarGraph.GetNeighbors(System.Drawing.Point)"/> calls by about one third. When a location is
            found to be visible but itself opaque, its neighbors are skipped in future calculations.
            </para><para>
            We assume that any skipped locations that are in fact visible will be reached through
            other (transparent) neighbors of the opaque location. This assumption holds for all
            forms of the standard <see cref="T:Tektosyne.Geometry.PolygonGrid"/> which is why <b>SkipOpaqueNeighbors</b>
            defaults to <c>true</c>.
            </para><para>
            Set this property to <c>false</c> when using a <see cref="P:Tektosyne.Geometry.Visibility.Graph"/> whose concept of
            neighborhood is sufficiently sparse that visible neighbors of opaque locations are not
            always neighbors of transparent locations as well.</para></remarks>
        </member>
        <member name="T:Tektosyne.Geometry.IPlanarGraph">
            <summary>
            Provides a navigable graph whose nodes are locations in two-dimensional space.</summary>
            <remarks><para>
            <b>IPlanarGraph</b> provides a graph whose nodes are uniquely identified by <see cref="T:System.Drawing.Point"/> values. Connected locations can be navigated by mobile objects, typically
            represented by an instance of the <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> interface.
            </para><para>
            <b>IPlanarGraph</b> makes no assumptions about the underlying topology. Representable
            topologies include grids of regular polygons as described by the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>
            class, but also spheroid surfaces and irregular graphs.
            </para><para>
            The <b>IPlanarAgent</b> and <b>IPlanarGraph</b> interfaces allow clients to use the generic
            search algorithms <see cref="T:Tektosyne.Geometry.AStar"/> and <see cref="T:Tektosyne.Geometry.Coverage"/> with application-specific
            graphs and agents.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.IPlanarGraph.Contains(System.Int32,System.Int32)">
            <overloads>
            Determines whether the specified locations are contained within the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/>.</overloads>
            <summary>
            Determines whether the specified coordinate pair is contained within the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/>.</summary>
            <param name="x">
            The x-coordinate of the location to test.</param>
            <param name="y">
            The y-coordinate of the location to test.</param>
            <returns>
            <c>true</c> if this <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> instance contains a location with the
            specified <paramref name="x"/> and <paramref name="y"/> coordinates; otherwise,
            <c>false</c>.</returns>
            <remarks>
            A location is called valid if it is contained within the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/>
            instance.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.IPlanarGraph.Contains(System.Drawing.Point)">
            <summary>
            Determines whether the specified location is contained within the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/>.</summary>
            <param name="location">
            The coordinates of the location to test.</param>
            <returns>
            <c>true</c> if this <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> instance contains the specified <paramref name="location"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            A location is called valid if it is contained within the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/>
            instance.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.IPlanarGraph.Contains(System.Drawing.Rectangle)">
            <summary>
            Determines whether the specified rectangle is entirely contained within the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/>.</summary>
            <param name="rectangle">
            A rectangle containing the coordinates of all locations to test.</param>
            <returns>
            <c>true</c> if this <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> instance contains all locations indicated
            by the specified <paramref name="rectangle"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            A location is called valid if it is contained within the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/>
            instance.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.IPlanarGraph.GetDistance(System.Drawing.Point,System.Drawing.Point)">
            <summary>
            Returns the distance between the two specified locations.</summary>
            <param name="source">
            The coordinates of the first location.</param>
            <param name="target">
            The coordinates of the second location.</param>
            <returns>
            The distance between <paramref name="source"/> and <paramref name="target"/>, measured
            in movement steps.</returns>
            <remarks><para>
            The distance between two locations is defined as the minimum number of movement steps
            required to reach <paramref name="target"/> from <paramref name="source"/>. Two
            locations are called direct neighbors if their distance is one.
            </para><para>
            <b>GetDistance</b> must conform to the following invariants:
            </para><list type="bullet"><item>
            The distance of identical valid locations is always zero.
            </item><item>
            The distance of different valid locations is always positive.
            </item><item>
            The distance of two valid locations remains unchanged if the arguments are reversed.
            </item><item>
            The distance is undefined if one or both locations are invalid. In this case only, the
            result may be negative.</item></list></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.IPlanarGraph.GetNeighbors(System.Drawing.Point)">
            <overloads>
            Returns all locations within a certain distance around the specified location.
            </overloads>
            <summary>
            Returns all direct neighbors of the specified location.</summary>
            <param name="location">
            The coordinates of the location whose neighbors to return.</param>
            <returns>
            A <see cref="T:System.Collections.Generic.List`1"/> containing all valid locations whose distance to the 
            specified <paramref name="location"/> is one. The number of elements is at most <see cref="P:Tektosyne.Geometry.IPlanarGraph.Connectivity"/>.</returns>
            <remarks>
            <b>GetNeighbors</b> never returns a null reference, but it returns an empty <see cref="T:System.Collections.Generic.List`1"/> if the specified <paramref name="location"/> or all its neighbors
            are invalid.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.IPlanarGraph.GetNeighbors(System.Drawing.Point,System.Int32)">
            <summary>
            Returns all locations within the specified distance of the specified location.</summary>
            <param name="location">
            The coordinates of the location whose neighbors to return.</param>
            <param name="distance">
            The distance around the specified <paramref name="location"/> in which another location
            is considered a neighbor.</param>
            <returns>
            A <see cref="T:System.Collections.Generic.List`1"/> containing all valid locations whose distance to the
            specified <paramref name="location"/> is greater than zero and equal to or less than
            <paramref name="distance"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="distance"/> is zero or negative.</exception>
            <remarks>
            <b>GetNeighbors</b> never returns a null reference, but it returns an empty <see cref="T:System.Collections.Generic.List`1"/> if the specified <paramref name="location"/> or all its neighbors
            are invalid.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.IPlanarGraph.GraphToWorld(System.Drawing.Point)">
            <summary>
            Converts the specified location from graph to world coordinates.</summary>
            <param name="location">
            The graph coordinates of the location to convert.</param>
            <returns>
            The world coordinates of the specified <paramref name="location"/>.</returns>
            <remarks>
            <b>GraphToWorld</b> returns coordinates within a "world" coordinate system that is
            independent of the coordinate system used to represent graph nodes. The interpretation
            of world coordinates depends on the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> instance.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.IPlanarGraph.IndexOfLocation(System.Drawing.Point)">
            <summary>
            Returns the unique index associated with the specified location.</summary>
            <param name="location">
            The coordinates of the location whose index to return.</param>
            <returns>
            A non-negative <see cref="T:System.Int32"/> value that uniquely identifies the specified
            <paramref name="location"/>. This value is always less than the value of the <see cref="P:Tektosyne.Geometry.IPlanarGraph.Locations"/> property.</returns>
            <remarks>
            To associate arbitrary data with the locations in this <see cref="T:Tektosyne.Geometry.IPlanarAgent"/>
            instance, allocate a one-dimensional <see cref="T:System.Array"/> whose size equals <see cref="P:Tektosyne.Geometry.IPlanarGraph.Locations"/>, and then use <b>IndexOfLocation</b> to find the array index
            associated with any given <paramref name="location"/>.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.IPlanarGraph.Connectivity">
            <summary>
            Gets the maximum number of neighbors for any given location.</summary>
            <value>
            A positive <see cref="T:System.Int32"/> value indicating the maximum number of direct neighbors
            for any given location.</value>
            <remarks>
            For any given location, its direct neighbors are those for which <see cref="M:Tektosyne.Geometry.IPlanarGraph.GetDistance(System.Drawing.Point,System.Drawing.Point)"/> returns one.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.IPlanarGraph.Locations">
            <summary>
            Gets the total number of locations in the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/>.</summary>
            <value>
            A positive <see cref="T:System.Int32"/> value indicating the total number of locations in this
            <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> instance.</value>
        </member>
        <member name="P:Tektosyne.Geometry.IPlanarGraph.VisibilityGraph">
            <summary>
            Gets a variant of the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> that is suitable for line-of-sight
            calculations.</summary>
            <value>
            An <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> instance that is suitable for line-of-sight calculations
            and otherwise identical to the current instance.</value>
            <remarks><para>
            <b>VisibilityGraph</b> should always return the current <see cref="T:Tektosyne.Geometry.IPlanarGraph"/>
            instance, except when the underlying topology assumes a concept of <em>reachable</em>
            neighbors that is different from its concept of <em>visible</em> neighbors.
            </para><para>
            In that case, <b>VisibilityGraph</b> should return another <see cref="T:Tektosyne.Geometry.IPlanarGraph"/>
            instance that is modified to assume visible rather than reachable neighbors.
            Line-of-sight algorithms should operate on the <b>VisibilityGraph</b> of any <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> supplied to them.
            </para><para>
            Visibility calculations are based on world coordinates, as defined by <see cref="M:Tektosyne.Geometry.IPlanarGraph.GraphToWorld(System.Drawing.Point)"/> and <see cref="P:Tektosyne.Geometry.IPlanarGraph.WorldNodeRadius"/>. The <see cref="M:Tektosyne.Geometry.IPlanarGraph.GetNeighbors(System.Drawing.Point)"/> method of a <b>VisibilityGraph</b> should return exactly
            those neighbors that are immediately visible from a given location and might block the
            view to more distant nodes. <see cref="P:Tektosyne.Geometry.IPlanarGraph.Connectivity"/> should return the maximum number
            of such neighbors for any possible location.</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.IPlanarGraph.WorldNodeRadius">
            <summary>
            Gets the radius of a graph node in world coordinates.</summary>
            <value>
            The radius of a circle that approximates the world representation of a graph node when
            centered on its <see cref="M:Tektosyne.Geometry.IPlanarGraph.GraphToWorld(System.Drawing.Point)"/> coordinates.</value>
            <remarks>
            <b>WorldNodeRadius</b> refers to the same "world" coordinate system as the <see cref="M:Tektosyne.Geometry.IPlanarGraph.GraphToWorld(System.Drawing.Point)"/> method. Line-of-sight algorithms operating on a <see cref="P:Tektosyne.Geometry.IPlanarGraph.VisibilityGraph"/> should use this property to determine which locations might be
            obscured by a given node.</remarks>
        </member>
        <member name="T:Tektosyne.Geometry.AStar">
            <summary>
            Provides an A* pathfinding algorithm.</summary>
            <remarks><para>
            <b>AStar</b> provides a general-purpose pathfinding algorithm for arbitrary instances of the
            <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> and <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> interfaces.
            </para><para>
            The A* algorithm finds the best path to move an <b>IPlanarAgent</b> from one specified
            location to another. The "best path" is the one whose total cost is minimal compared to all
            other connecting paths, where the total cost of a path is defined as the sum of all <see cref="M:Tektosyne.Geometry.IPlanarAgent.GetStepCost(System.Drawing.Point,System.Drawing.Point)"/> results for each step between two adjacent path locations.
            </para><para>
            This implementation of the A* algorithm is based on the CAStar class created by James
            Matthews. The original source code supplemented his article "Basic A* Pathfinding Made
            Simple", pages 105-113 in "AI Game Programming Wisdom", Charles River Media, 2002.
            </para><note type="caution">
            Multi-step movements are problematic when the <b>IPlanarAgent</b> uses a non-trivial <see cref="M:Tektosyne.Geometry.IPlanarAgent.CanOccupy(System.Drawing.Point)"/> condition. After a successful path search, <see cref="P:Tektosyne.Geometry.AStar.BestNode"/> is always valid and optimal for a single-step movement. However, calling
            <see cref="M:Tektosyne.Geometry.AStar.GetLastNode(System.Int32)"/> with less than the maximum path cost may yield a suboptimal
            intermediate node, or none at all. Since the algorithm does not know whether a given
            intermediate path node will be occupied permanently or merely traversed, the final path may
            contain many intermediate nodes for which <see cref="M:Tektosyne.Geometry.IPlanarAgent.CanOccupy(System.Drawing.Point)"/> fails.
            </note></remarks>
        </member>
        <member name="T:Tektosyne.Geometry.IPlanarPath">
            <summary>
            Provides the path of an <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> across an <see cref="T:Tektosyne.Geometry.IPlanarGraph"/>.</summary>
            <remarks><para>
            <b>IPlanarPath</b> tracks the path that results when an <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> instance
            moves across an <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> instance.
            </para><para>
            In addition to the actual movement path as a sequence of locations in two-dimensional space,
            <b>IPlanarPath</b> also provides the total cost of this path, and a method to determine the
            last path location that can be reached within a given maximum cost.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.IPlanarPath.GetLastLocation(System.Int32)">
            <summary>
            Returns the last location in the movement path whose total path cost does not exceed the
            specified maximum cost.</summary>
            <param name="maxCost">
            The maximum total path cost of the returned location.</param>
            <returns>
            The coordinates of the last element in <see cref="P:Tektosyne.Geometry.IPlanarPath.Locations"/> whose total path cost
            does not exceed the specified <paramref name="maxCost"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="maxCost"/> is zero or negative.</exception>
            <exception cref="T:System.InvalidOperationException">
            The <see cref="T:Tektosyne.Geometry.IPlanarPath"/> instance contains invalid data.</exception>
        </member>
        <member name="P:Tektosyne.Geometry.IPlanarPath.Locations">
            <summary>
            Gets a list of all locations in the movement path.</summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.IList`1"/> containing the coordinates of all locations that
            constitute the movement path.</value>
            <remarks>
            <b>Locations</b> should never return a null reference, but it may return an empty
            collection to signify invalid data.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.IPlanarPath.TotalCost">
            <summary>
            Gets the total cost of the movement path.</summary>
            <value>
            The sum of all <see cref="M:Tektosyne.Geometry.IPlanarAgent.GetStepCost(System.Drawing.Point,System.Drawing.Point)"/> results for all elements in <see cref="P:Tektosyne.Geometry.IPlanarPath.Locations"/>.</value>
            <remarks>
            <b>TotalCost</b> may return a non-positive value to signify invalid data.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.AStar.#ctor(Tektosyne.Geometry.IPlanarGraph)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.AStar"/> class with the specified
            two-dimensional graph.</summary>
            <param name="graph">
            The initial value for the <see cref="P:Tektosyne.Geometry.AStar.Graph"/> property.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="graph"/> is a null reference.</exception>
        </member>
        <member name="M:Tektosyne.Geometry.AStar.FindBestPath(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Drawing.Point)">
            <summary>
            Finds the best path to move the specified agent from one specified location to another.
            </summary>
            <param name="agent">
            The <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> instance for which a movement path should be found.
            </param>
            <param name="source">
            The coordinates of the starting location.</param>
            <param name="target">
            The coordinates of the location to reach.</param>
            <returns>
            <c>true</c> if a best path between <paramref name="source"/> and <paramref name="target"/> could be found; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="agent"/> is a null reference.</exception>
            <remarks><para>
            <b>FindBestPath</b> returns <c>false</c> if either of the specified <paramref name="source"/> and <paramref name="target"/> locations is invalid, or if no connecting
            path could be found.
            </para><para>
            Otherwise, <b>FindBestPath</b> returns <c>true</c> and sets the <see cref="P:Tektosyne.Geometry.AStar.BestNode"/>,
            <see cref="P:Tektosyne.Geometry.AStar.Locations"/>, and <see cref="P:Tektosyne.Geometry.AStar.TotalCost"/> properties to the results of the
            path search.
            </para><para>
            <b>FindBestPath</b> calls <see cref="M:Tektosyne.Geometry.IPlanarAgent.CanOccupy(System.Drawing.Point)"/> and <see cref="M:Tektosyne.Geometry.IPlanarAgent.IsNearTarget(System.Drawing.Point,System.Drawing.Point,System.Int32)"/> on the specified <paramref name="agent"/> to
            determine whether a given <b>BestNode</b> candidate is acceptable. Depending on the
            implementation of <b>IsNearTarget</b>, the <see cref="P:Tektosyne.Geometry.PathNode.Location"/> of the final
            <b>BestNode</b> value may differ from the <paramref name="target"/> location, and
            possibly equal the <paramref name="source"/> location. <b>CanOccupy</b> is never called
            on path nodes that match the <paramref name="source"/> location.
            </para><para>
            <b>FindBestPath</b> operates with a <em>restricted search radius</em> if <see cref="P:Tektosyne.Geometry.AStar.RelativeLimit"/> is greater than zero. In this case, <see cref="P:Tektosyne.Geometry.AStar.AbsoluteLimit"/>
            is set to the product (rounded up) of <b>RelativeLimit</b> and the distance between
            <paramref name="source"/> and <paramref name="target"/>, in movement steps. Whenever a
            location is considered for inclusion in the search path, its distances from <paramref name="source"/> and <paramref name="target"/> are calculated, and the location is
            ignored if the sum exceeds <b>AbsoluteLimit</b>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.AStar.GetLastLocation(System.Int32)">
            <summary>
            Returns the last location in the best path whose total path cost does not exceed the
            specified maximum cost.</summary>
            <param name="maxCost">
            The maximum total path cost of the returned location.</param>
            <returns>
            The coordinates of the last element in <see cref="P:Tektosyne.Geometry.AStar.Locations"/> whose total path cost
            does not exceed the specified <paramref name="maxCost"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="maxCost"/> is zero or negative.</exception>
            <exception cref="T:Tektosyne.PropertyValueException">
            <see cref="P:Tektosyne.Geometry.AStar.BestNode"/> is a null reference.</exception>
            <remarks>
            <b>GetLastLocation</b> returns the <see cref="P:Tektosyne.Geometry.PathNode.Location"/> of the <see cref="T:Tektosyne.Geometry.PathNode"/> object found by <see cref="M:Tektosyne.Geometry.AStar.GetLastNode(System.Int32)"/> for the specified <paramref name="maxCost"/>. Please see there for details.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.AStar.GetLastNode(System.Int32)">
            <summary>
            Returns the last node in the best path whose total path cost does not exceed the
            specified maximum cost.</summary>
            <param name="maxCost">
            The maximum total path cost of the returned node.</param>
            <returns>
            The <see cref="T:Tektosyne.Geometry.PathNode"/> object that is the last parent of <see cref="P:Tektosyne.Geometry.AStar.BestNode"/>
            whose total path cost does not exceed the specified <paramref name="maxCost"/>.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="maxCost"/> is zero or negative.</exception>
            <exception cref="T:Tektosyne.PropertyValueException">
            <see cref="P:Tektosyne.Geometry.AStar.BestNode"/> is a null reference.</exception>
            <remarks><para>
            <b>GetLastNode</b> always returns a <see cref="T:Tektosyne.Geometry.PathNode"/> object whose <see cref="P:Tektosyne.Geometry.PathNode.Location"/> corresponds to an element of <see cref="P:Tektosyne.Geometry.AStar.Locations"/>. The
            exact element depends on the specified <paramref name="maxCost"/>.
            </para><para>
            <b>GetLastNode</b> searches for the <see cref="T:Tektosyne.Geometry.PathNode"/> object that is the last <see cref="P:Tektosyne.Geometry.PathNode.Parent"/> of <see cref="P:Tektosyne.Geometry.AStar.BestNode"/> whose <see cref="P:Tektosyne.Geometry.PathNode.G"/> value
            does not exceed the specified <paramref name="maxCost"/>, and for which <see cref="M:Tektosyne.Geometry.IPlanarAgent.CanOccupy(System.Drawing.Point)"/> succeeds with the moving <see cref="P:Tektosyne.Geometry.AStar.Agent"/>.
            </para><para>
            If <see cref="P:Tektosyne.Geometry.IPlanarAgent.RelaxedRange"/> is <c>true</c> for the moving <see cref="P:Tektosyne.Geometry.AStar.Agent"/>, the <see cref="P:Tektosyne.Geometry.PathNode.G"/> value of the returned <b>PathNode</b> may
            exceed <paramref name="maxCost"/> if the <b>G</b> value of its <see cref="P:Tektosyne.Geometry.PathNode.Parent"/> node is strictly less than <paramref name="maxCost"/>.
            </para><para>
            If the specified <paramref name="maxCost"/> exceeds the cost of all nodes, or if
            <b>CanOccupy</b> fails for all affordable nodes, <b>GetLastNode</b> returns the <see cref="T:Tektosyne.Geometry.PathNode"/> object that corresponds to the first <b>Locations</b> element, i.e.
            the source location of the path search.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.AStar.CreateChildren(Tektosyne.Geometry.PathNode)">
            <summary>
            Adds all valid neighbors as children to the specified parent node.</summary>
            <param name="parent">
            The <see cref="T:Tektosyne.Geometry.PathNode"/> whose neighbors to examine.</param>
        </member>
        <member name="M:Tektosyne.Geometry.AStar.GetWorldDistance(Tektosyne.Geometry.PathNode)">
            <summary>
            Returns the squared world distance between the specified <see cref="T:Tektosyne.Geometry.PathNode"/> and the
            target location.</summary>
            <param name="node">
            The <see cref="T:Tektosyne.Geometry.PathNode"/> whose distance to the target location to compute.</param>
            <returns>
            The squared distance, in world coordinates, from the specified <paramref name="node"/>
            to the current target location.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.AStar.InitializeCollections(System.Int32)">
            <summary>
            Clears all result and intermediate collections, and sets their capacity to at least the
            specified value.</summary>
            <param name="capacity">
            The new minimum capacity for all result and intermediate collections.</param>
        </member>
        <member name="M:Tektosyne.Geometry.AStar.LinkChild(Tektosyne.Geometry.PathNode,System.Drawing.Point)">
            <summary>
            Links the child node with the specified location to the specified parent node.</summary>
            <param name="parent">
            The parent node to link with the child node at <paramref name="location"/>.</param>
            <param name="location">
            The location of the child node to link with <paramref name="parent"/>.</param>
            <remarks>
            <b>LinkChild</b> searches the open and closed lists for the specified <paramref
            name="location"/>, and creates a new open list node if no matching node was found.
            </remarks>
        </member>
        <member name="M:Tektosyne.Geometry.AStar.SetBestNode">
            <summary>
            Sets the <see cref="P:Tektosyne.Geometry.AStar.BestNode"/> property to the open list node with the lowest
            <em>f</em> value.</summary>
            <returns>
            <c>true</c> if the open list contained another node that was removed and stored as the
            new value of the <see cref="P:Tektosyne.Geometry.AStar.BestNode"/> property; otherwise, <c>false</c>.</returns>
            <remarks>
            <see cref="P:Tektosyne.Geometry.AStar.BestNode"/> is a null reference exactly if <b>SetBestNode</b> returns
            <c>false</c>.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.AStar.UpdateParents(Tektosyne.Geometry.PathNode)">
            <summary>
            Updates all parents of all children of the specified node to reflect lowered path costs.
            </summary>
            <param name="node">
            A closed list node that has been reached by a new path.</param>
            <remarks>
            All possible paths are represented by <see cref="P:Tektosyne.Geometry.PathNode.Parent"/> links through the
            current <see cref="T:Tektosyne.Geometry.PathNode"/> collection. If an existing node has been reached by a new
            and cheaper path, the cost for all paths that involve this node must be updated
            accordingly.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.AStar.AbsoluteLimit">
            <summary>
            Gets the absolute limit on the search radius for the last path search.</summary>
            <value><para>
            The maximum sum of the distances, in movement steps, between any location in the search
            path and the source and target locations. Locations that exceed this sum are not added
            to the search path.
            </para><para>-or-</para><para>
            Zero to indicate that there was no limit on the search radius. The default is zero.
            </para></value>
            <remarks>
            This property is set by <see cref="M:Tektosyne.Geometry.AStar.FindBestPath(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Drawing.Point)"/>, depending on the current value of
            <see cref="P:Tektosyne.Geometry.AStar.RelativeLimit"/>. Please see there for further details.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.AStar.Agent">
            <summary>
            Gets the <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> for the last path search.</summary>
            <value>
            The <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> that was supplied to the last invocation of <see cref="M:Tektosyne.Geometry.AStar.FindBestPath(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Drawing.Point)"/>. The default is a null reference.</value>
        </member>
        <member name="P:Tektosyne.Geometry.AStar.BestNode">
            <summary>
            Gets the final node found by the last successful path search.</summary>
            <value>
            The <see cref="T:Tektosyne.Geometry.PathNode"/> object for the target location of the last successful call to
            <see cref="M:Tektosyne.Geometry.AStar.FindBestPath(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Drawing.Point)"/>. This <b>PathNode</b> is associated with the best path.
            </value>
            <remarks><para>
            <b>BestNode</b> returns a null reference if the last call to <see cref="M:Tektosyne.Geometry.AStar.FindBestPath(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Drawing.Point)"/>
            returned <c>false</c>, or if the method has not yet been called.
            </para><para>
            The best path associated with the <b>BestNode</b> property is returned by the <see cref="P:Tektosyne.Geometry.AStar.Locations"/> property. It is found by backtracking through the <see cref="P:Tektosyne.Geometry.PathNode.Parent"/> properties of all connected <see cref="T:Tektosyne.Geometry.PathNode"/> objects.
            </para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.AStar.Graph">
            <summary>
            Gets the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> on which all searches are performed.</summary>
            <value>
            An <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> object that defines the two-dimensional graph on which all
            searches are performed.</value>
            <remarks>
            <b>Graph</b> never returns a null reference. This property never changes once the object
            has been constructed.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.AStar.Locations">
            <summary>
            Gets a list of all locations in the best path found by the last successful path search.
            </summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.IList`1"/> containing the coordinates of all locations that
            constitute the best movement path found by the last successful call to <see cref="M:Tektosyne.Geometry.AStar.FindBestPath(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Drawing.Point)"/>, including source and target location.</value>
            <remarks><para>
            <b>Locations</b> never returns a null reference, but it returns an empty collection if
            the last call to <see cref="M:Tektosyne.Geometry.AStar.FindBestPath(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Drawing.Point)"/> returned <c>false</c>, or if the method has
            not yet been called.
            </para><para>
            The first element in <b>Locations</b> is always the source location, and the last
            element is always the <see cref="P:Tektosyne.Geometry.PathNode.Location"/> of <see cref="P:Tektosyne.Geometry.AStar.BestNode"/>.
            </para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.AStar.RelativeLimit">
            <summary>
            Gets or sets the limit on the search radius, relative to the distance between source and
            target location.</summary>
            <value><para>
            The factor to multiply with the distance between source and target location, in movement
            steps, to obtain the <see cref="P:Tektosyne.Geometry.AStar.AbsoluteLimit"/> on the search radius.
            </para><para>-or-</para><para>
            Zero to indicate that there is no limit on the search radius. The default is zero.
            </para></value>
            <exception cref="T:System.ArgumentOutOfRangeException">
            The property is set to a negative value, or to a value that is greater than zero and
            less than one.</exception>
            <remarks><para>
            Setting <b>RelativeLimit</b> to a positive value restricts the search path to an
            elliptical area. The source and target locations are the focal points of the ellipse,
            and <b>RelativeLimit</b> defines its inverse eccentricity.
            </para><para>
            Please refer to <see cref="P:Tektosyne.Geometry.AStar.AbsoluteLimit"/> and <see cref="M:Tektosyne.Geometry.AStar.FindBestPath(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Drawing.Point)"/> for further
            details.</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.AStar.TotalCost">
            <summary>
            Gets the total cost of the best path found by the last successful path search.</summary>
            <value>
            The value of the <see cref="P:Tektosyne.Geometry.PathNode.G"/> property of <see cref="P:Tektosyne.Geometry.AStar.BestNode"/>. This is
            the sum of all <see cref="M:Tektosyne.Geometry.IPlanarAgent.GetStepCost(System.Drawing.Point,System.Drawing.Point)"/> results for all elements in <see cref="P:Tektosyne.Geometry.AStar.Locations"/>.</value>
            <remarks>
            <b>TotalCost</b> returns -1 if <see cref="P:Tektosyne.Geometry.AStar.BestNode"/> is a null reference. This is the
            case if the last call to <see cref="M:Tektosyne.Geometry.AStar.FindBestPath(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Drawing.Point)"/> returned <c>false</c>, or if the
            method has not yet been called.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.AStar.UseWorldDistance">
            <summary>
            Gets or sets a value indicating whether path nodes are selected based on their distance
            from the target location, in world coordinates.</summary>
            <value>
            <c>true</c> to prefer path nodes with a minimal distance from the target location, in
            world coordinates; otherwise, <c>false</c>. The default is <c>false</c>.</value>
            <remarks><para>
            If <b>UseWorldDistance</b> is <c>true</c>, candidate path nodes whose path costs are
            identical are also compared for their distances from the target location, using the
            world coordinate system defined by <see cref="M:Tektosyne.Geometry.IPlanarGraph.GraphToWorld(System.Drawing.Point)"/>.
            </para><para>
            This option eliminates zero-cost oscillations in the final path, creating a smoother and
            more "natural" course. However, the additional calculations and comparisons may slow
            down pathfinding.</para></remarks>
        </member>
        <member name="T:Tektosyne.NaturalString">
            <summary>
            Provides a <see cref="T:System.String"/> with implicit natural sorting, using the sorting rules of
            the <see cref="F:System.StringComparison.CurrentCulture"/>.</summary>
            <remarks><para>
            <b>NaturalString</b> is an immmutable structure that relies on the <see cref="M:Tektosyne.StringUtility.CompareNatural(System.String,System.String)"/> method to provide implicit natural
            sorting for a wrapped <see cref="T:System.String"/>, using the sorting rules of the <see cref="F:System.StringComparison.CurrentCulture"/>.
            </para><para>
            Use this structure when specifying an explicit <see cref="T:System.String"/> sorter is inconvenient.
            A similar structure, <see cref="T:Tektosyne.OrdinalString"/>, provides implicit natural sorting with
            <see cref="F:System.StringComparison.Ordinal"/> sorting rules.</para></remarks>
        </member>
        <member name="M:Tektosyne.NaturalString.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.NaturalString"/> structure with the
            specified <see cref="T:System.String"/> value.</summary>
            <param name="value">
            The initial value for the <see cref="P:Tektosyne.NaturalString.Value"/> property.</param>
        </member>
        <member name="F:Tektosyne.NaturalString.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.NaturalString"/> instance.</summary>
            <remarks>
            <b>Empty</b> contains a <see cref="T:Tektosyne.NaturalString"/> instance that was created with the
            default constructor.</remarks>
        </member>
        <member name="M:Tektosyne.NaturalString.GetHashCode">
            <summary>
            Returns the hash code for this instance of <see cref="T:Tektosyne.NaturalString"/>.</summary>
            <returns>
            An <see cref="T:System.Int32"/> hash code for the current <see cref="T:Tektosyne.NaturalString"/>.</returns>
            <remarks>
            <b>GetHashCode</b> returns the <see cref="M:System.String.GetHashCode"/> result for the current
            <see cref="P:Tektosyne.NaturalString.Value"/> if it is not a null reference; otherwise, zero.</remarks>
        </member>
        <member name="M:Tektosyne.NaturalString.ToString">
            <summary>
            Returns a <see cref="T:System.String"/> that represents the <see cref="T:Tektosyne.NaturalString"/>.
            </summary>
            <returns>
            The result of the <see cref="M:Tektosyne.StringUtility.Validate(System.String)"/> for the value of the <see cref="P:Tektosyne.NaturalString.Value"/> property.</returns>
        </member>
        <member name="M:Tektosyne.NaturalString.op_Equality(Tektosyne.NaturalString,Tektosyne.NaturalString)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.NaturalString"/> objects have the same value.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.NaturalString"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.NaturalString"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.NaturalString.Equals(Tektosyne.NaturalString,Tektosyne.NaturalString)"/> method to
            test the two <see cref="T:Tektosyne.NaturalString"/> instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.NaturalString.op_Inequality(Tektosyne.NaturalString,Tektosyne.NaturalString)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.NaturalString"/> objects have different values.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.NaturalString"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.NaturalString"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is different from the value of
            <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.NaturalString.Equals(Tektosyne.NaturalString,Tektosyne.NaturalString)"/> method to
            test the two <see cref="T:Tektosyne.NaturalString"/> instances for value inequality.</remarks>
        </member>
        <member name="M:Tektosyne.NaturalString.op_GreaterThan(Tektosyne.NaturalString,Tektosyne.NaturalString)">
            <summary>
            Determines whether a specified <see cref="T:Tektosyne.NaturalString"/> is greater than another
            specified <see cref="T:Tektosyne.NaturalString"/>.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.NaturalString"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.NaturalString"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is greater than the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.NaturalString.CompareTo(Tektosyne.NaturalString)"/> method to determine the
            relative values of the two <see cref="T:Tektosyne.NaturalString"/> instances.</remarks>
        </member>
        <member name="M:Tektosyne.NaturalString.op_LessThan(Tektosyne.NaturalString,Tektosyne.NaturalString)">
            <summary>
            Determines whether a specified <see cref="T:Tektosyne.NaturalString"/> is less than another
            specified <see cref="T:Tektosyne.NaturalString"/>.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.NaturalString"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.NaturalString"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is less than the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.NaturalString.CompareTo(Tektosyne.NaturalString)"/> method to determine the
            relative values of the two <see cref="T:Tektosyne.NaturalString"/> instances.</remarks>
        </member>
        <member name="M:Tektosyne.NaturalString.op_GreaterThanOrEqual(Tektosyne.NaturalString,Tektosyne.NaturalString)">
            <summary>
            Determines whether a specified <see cref="T:Tektosyne.NaturalString"/> is greater than or equal to
            another specified <see cref="T:Tektosyne.NaturalString"/>.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.NaturalString"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.NaturalString"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is greater than or equal to the value
            of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.NaturalString.CompareTo(Tektosyne.NaturalString)"/> method to determine the
            relative values of the two <see cref="T:Tektosyne.NaturalString"/> instances.</remarks>
        </member>
        <member name="M:Tektosyne.NaturalString.op_LessThanOrEqual(Tektosyne.NaturalString,Tektosyne.NaturalString)">
            <summary>
            Determines whether a specified <see cref="T:Tektosyne.NaturalString"/> is less than or equal to
            another specified <see cref="T:Tektosyne.NaturalString"/>.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.NaturalString"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.NaturalString"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is less than or equal to the value of
            <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.NaturalString.CompareTo(Tektosyne.NaturalString)"/> method to determine the
            relative values of the two <see cref="T:Tektosyne.NaturalString"/> instances.</remarks>
        </member>
        <member name="M:Tektosyne.NaturalString.op_Implicit(System.String)~Tektosyne.NaturalString">
            <summary>
            Converts a <see cref="T:System.String"/> to the equivalent <see cref="T:Tektosyne.NaturalString"/>.</summary>
            <param name="value">
            The <see cref="T:System.String"/> to wrap in an <see cref="T:Tektosyne.NaturalString"/>.</param>
            <returns>
            A new <see cref="T:Tektosyne.NaturalString"/> wrapping the specified <paramref name="value"/>.
            </returns>
        </member>
        <member name="M:Tektosyne.NaturalString.op_Implicit(Tektosyne.NaturalString)~System.String">
            <summary>
            Converts a <see cref="T:Tektosyne.NaturalString"/> to the equivalent <see cref="T:System.String"/>.</summary>
            <param name="natural">
            The <see cref="T:Tektosyne.NaturalString"/> instance whose <see cref="P:Tektosyne.NaturalString.Value"/> property to extract.
            </param>
            <returns>
            The value of the <see cref="P:Tektosyne.NaturalString.Value"/> property of the specified <paramref name="natural"/> instance.</returns>
        </member>
        <member name="M:Tektosyne.NaturalString.System#IComparable#CompareTo(System.Object)">
            <overloads>
            Compares two <see cref="T:Tektosyne.NaturalString"/> objects and returns an indication of their
            relative values.</overloads>
            <summary>
            Compares this instance of <see cref="T:Tektosyne.NaturalString"/> and a specified object, which must
            be a <see cref="T:Tektosyne.NaturalString"/>, and returns an indication of their relative values.
            </summary>
            <param name="obj">
            An <see cref="T:System.Object"/> to compare to this instance of <see cref="T:Tektosyne.NaturalString"/>.
            </param>
            <returns><para>
            An <see cref="T:System.Int32"/> value indicating the relative order of this instance and
            <paramref name="obj"/>, as follows:
            </para><list type="table"><listheader>
            <term>Return Value</term><description>Condition</description>
            </listheader><item>
            <term>Less than zero</term>
            <description>The <see cref="P:Tektosyne.NaturalString.Value"/> property of this instance is less than that of
            <paramref name="obj"/>.</description>
            </item><item>
            <term>Zero</term>
            <description>The <see cref="P:Tektosyne.NaturalString.Value"/> property of this instance equals that of <paramref name="obj"/>.</description>
            </item><item>
            <term>Greater than zero</term><description><para>
            The <see cref="P:Tektosyne.NaturalString.Value"/> property of this instance is greater than that of <paramref name="obj"/>.
            </para><para>-or-</para><para>
            <paramref name="obj"/> is a null reference.</para></description>
            </item></list></returns>
            <exception cref="T:System.ArgumentException">
            <paramref name="obj"/> is neither a <see cref="T:Tektosyne.NaturalString"/> nor a null reference.
            </exception>
            <remarks><para>
            The specified <paramref name="obj"/> must be either a null reference or an instance of
            <b>NaturalString</b>.
            </para><para>
            <b>CompareTo</b> determines the relative order of the two instances by calling <see cref="M:Tektosyne.StringUtility.CompareNatural(System.String,System.String)"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.NaturalString.CompareTo(Tektosyne.NaturalString)">
            <summary>
            Compares this instance and a specified <see cref="T:Tektosyne.NaturalString"/> and returns an
            indication of their relative values.</summary>
            <param name="natural">
            A <see cref="T:Tektosyne.NaturalString"/> to compare to this instance.</param>
            <returns><para>
            An <see cref="T:System.Int32"/> value indicating the relative order of this instance and
            <paramref name="natural"/>, as follows:
            </para><list type="table"><listheader>
            <term>Return Value</term><description>Condition</description>
            </listheader><item>
            <term>Less than zero</term>
            <description>The <see cref="P:Tektosyne.NaturalString.Value"/> property of this instance is less than that of
            <paramref name="natural"/>.</description>
            </item><item>
            <term>Zero</term>
            <description>The <see cref="P:Tektosyne.NaturalString.Value"/> property of this instance equals that of <paramref name="natural"/>.</description>
            </item><item>
            <term>Greater than zero</term><description>
            The <see cref="P:Tektosyne.NaturalString.Value"/> property of this instance is greater than that of <paramref name="natural"/>.</description>
            </item></list></returns>
            <remarks>
            <b>CompareTo</b> determines the relative order of the two instances by calling <see cref="M:Tektosyne.StringUtility.CompareNatural(System.String,System.String)"/>.</remarks>
        </member>
        <member name="M:Tektosyne.NaturalString.Equals(System.Object)">
            <overloads>
            Determines whether two <see cref="T:Tektosyne.NaturalString"/> objects have the same value.
            </overloads>
            <summary>
            Determines whether this instance of <see cref="T:Tektosyne.NaturalString"/> and a specified object,
            which must be a <see cref="T:Tektosyne.NaturalString"/>, have the same value.</summary>
            <param name="obj">
            An <see cref="T:System.Object"/> to compare to this instance of <see cref="T:Tektosyne.NaturalString"/>.
            </param>
            <returns>
            <c>true</c> if <paramref name="obj"/> is another <see cref="T:Tektosyne.NaturalString"/> instance
            and its value is the same as this instance; otherwise, <c>false</c>.</returns>
            <remarks>
            If the specified <paramref name="obj"/> is another <see cref="T:Tektosyne.NaturalString"/> instance,
            <b>Equals</b> calls <see cref="M:Tektosyne.StringUtility.CompareNatural(System.String,System.String)"/> to test
            the <see cref="P:Tektosyne.NaturalString.Value"/> properties of the two <see cref="T:Tektosyne.NaturalString"/> instances for
            value equality.</remarks>
        </member>
        <member name="M:Tektosyne.NaturalString.Equals(Tektosyne.NaturalString)">
            <summary>
            Determines whether this instance and a specified <see cref="T:Tektosyne.NaturalString"/> have the
            same value.</summary>
            <param name="natural">
            A <see cref="T:Tektosyne.NaturalString"/> to compare to this instance.</param>
            <returns>
            <c>true</c> if the value of <paramref name="natural"/> is the same as this instance;
            otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> calls <see cref="M:Tektosyne.StringUtility.CompareNatural(System.String,System.String)"/> to test
            the <see cref="P:Tektosyne.NaturalString.Value"/> properties of the two <see cref="T:Tektosyne.NaturalString"/> instances for
            value equality.</remarks>
        </member>
        <member name="M:Tektosyne.NaturalString.Equals(Tektosyne.NaturalString,Tektosyne.NaturalString)">
            <summary>
            Determines whether two specified <see cref="T:Tektosyne.NaturalString"/> objects have the same
            value.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.NaturalString"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.NaturalString"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> calls <see cref="M:Tektosyne.StringUtility.CompareNatural(System.String,System.String)"/> to test
            the <see cref="P:Tektosyne.NaturalString.Value"/> properties of the two <see cref="T:Tektosyne.NaturalString"/> instances for
            value equality.</remarks>
        </member>
        <member name="P:Tektosyne.NaturalString.Value">
            <summary>
            Gets the <see cref="T:System.String"/> value of the <see cref="T:Tektosyne.NaturalString"/>.</summary>
            <value>
            The <see cref="T:System.String"/> value of the <see cref="T:Tektosyne.NaturalString"/>.</value>
            <remarks>
            <b>Value</b> may return a null reference or an empty string. This property never changes
            once the object has been constructed.</remarks>
        </member>
        <member name="T:Tektosyne.Collections.MultiKeyedList`2">
            <summary>
            Provides a generic collection of elements that are accessible by index and by one or more
            user-defined keys.</summary>
            <typeparam name="TKey">
            The type of the all user-defined keys in the collection. Keys cannot be null references.
            </typeparam>
            <typeparam name="TValue">
            The type of all elements in the collection. If <typeparamref name="TValue"/> is a reference
            type, elements may be null references.</typeparam>
            <remarks><para>
            <b>MultiKeyedList</b> provides a <see cref="T:Tektosyne.Collections.ListEx`1"/> whose elements must define at least
            one embedded key of type <typeparamref name="TKey"/>. Several additional methods adopted
            from the <see cref="T:System.Collections.Generic.SortedList`2"/> class allow direct access by key.
            </para><para>
            The key of a given collection element is extracted by a user-defined <see cref="P:Tektosyne.Collections.MultiKeyedList`2.KeyConverter"/> method. This method must be specified
            during construction but may be changed at any time, allowing clients to use multiple keys
            with the same collection. All keys must be of type <typeparamref name="TKey"/>, however.
            </para><para>
            The collection may contain multiple identical keys, unless <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/>
            is <c>true</c>. All key access methods return the first occurrence of the specified key.
            Access by index is an O(1) operation but access by key is an O(<em>N</em>) operation, where
            <em>N</em> is the number of elements in the collection.
            </para><para>
            <b>MultiKeyedList</b> also provides several extra features inherited from <see cref="T:Tektosyne.Collections.ListEx`1"/>; please see there for details. Note that <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/>
            now checks for unique keys, rather than unique key-and-value pairs.</para></remarks>
        </member>
        <member name="T:Tektosyne.Collections.ListEx`1">
            <summary>
            Provides a generic collection of elements that are accessible by index.</summary>
            <typeparam name="T">
            The type of all elements in the collection. If <typeparamref name="T"/> is a reference type,
            elements may be null references.</typeparam>
            <remarks><para>
            <b>ListEx</b> provides a <see cref="T:System.Collections.Generic.List`1"/> with a few extra features:
            </para><list type="bullet"><item>
            <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> provides a set-like collection which ensures that all
            elements have unique values. Attempting to insert a duplicate value will raise a <see cref="T:System.NotSupportedException"/>. This property must be set during construction.
            </item><item>
            <see cref="M:Tektosyne.Collections.ListEx`1.AsReadOnly"/> returns a read-only wrapper that has the same public type
            as the original collection. Attempting to modify the collection through such a read-only
            view will raise a <see cref="T:System.NotSupportedException"/>.
            </item><item>
            <see cref="M:Tektosyne.Collections.ListEx`1.Copy"/> creates a deep copy of the collection by invoking <see cref="M:System.ICloneable.Clone"/> on each element. This feature requires that all copied elements
            implement the <see cref="T:System.ICloneable"/> interface.
            </item><item>
            <see cref="F:Tektosyne.Collections.ListEx`1.Empty"/> returns an immutable empty collection that is cached for
            repeated access.
            </item><item>
            <see cref="M:Tektosyne.Collections.ListEx`1.Equals(System.Collections.Generic.ICollection{`0})"/> compares two collections with identical element types for
            value equality of all elements. The collections compare as equal if they contain the same
            elements in the same order.
            </item></list><para>
            Moreover, several properties that the standard class provides as explicit interface
            implementations have been elevated to public visibility.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.ListEx`1"/> class.
            </overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.ListEx`1"/> class that is empty and has
            the default initial capacity.</summary>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.#ctor(System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.ListEx`1"/> class that is empty, has the
            default initial capacity, and optionally ensures that all elements are unique.</summary>
            <param name="isUnique">
            The initial value for the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property.</param>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.#ctor(System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.ListEx`1"/> class that contains elements
            copied from the specified collection and has sufficient capacity to accommodate the
            number of elements copied.</summary>
            <param name="collection">
            The <see cref="T:System.Collections.Generic.IEnumerable`1"/> collection whose elements are copied to the new
            collection.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="collection"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Collections.Generic.IEnumerable{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.ListEx`1"/> class that is empty and has
            the specified initial capacity.</summary>
            <param name="capacity">
            The number of elements that the new <see cref="T:Tektosyne.Collections.ListEx`1"/> is initially capable of
            storing.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="capacity"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.#ctor(System.Int32,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.ListEx`1"/> class that is empty, has the
            specified initial capacity, and optionally ensures that all elements are unique.
            </summary>
            <param name="capacity">
            The number of elements that the new <see cref="T:Tektosyne.Collections.ListEx`1"/> is initially capable of
            storing.</param>
            <param name="isUnique">
            The initial value for the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="capacity"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.#ctor(Tektosyne.Collections.ListEx{`0})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.ListEx`1"/> class that contains elements
            copied from the specified instance and has sufficient capacity to accommodate the
            number of elements copied.</summary>
            <param name="list">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> collection whose elements are copied to the new collection.
            </param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Collections.Generic.IEnumerable{`0})"/> for details. This constructor also
            copies the value of the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.#ctor(Tektosyne.Collections.ListEx{`0},System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.ListEx`1"/> class that is a read-only view
            of the specified instance.</summary>
            <param name="list">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> collection that provides the initial values for the <see cref="F:Tektosyne.Collections.ListEx`1.InnerList"/> and <see cref="F:Tektosyne.Collections.ListEx`1.UniqueFlag"/> fields.</param>
            <param name="readOnly">
            The initial value for the <see cref="F:Tektosyne.Collections.ListEx`1.ReadOnlyFlag"/> field. This argument must be
            <c>true</c>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="readOnly"/> is <c>false</c>.</exception>
            <remarks>
            This constructor is used to create a read-only wrapper around an existing collection.
            The new instance shares the data of the specified <paramref name="list"/>.</remarks>
        </member>
        <member name="F:Tektosyne.Collections.ListEx`1.InnerList">
            <summary>
            The <see cref="T:System.Collections.Generic.List`1"/> collection that holds the <typeparamref name="T"/> elements of
            the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
        </member>
        <member name="F:Tektosyne.Collections.ListEx`1.ReadOnlyFlag">
            <summary>
            Backs the <see cref="P:Tektosyne.Collections.ListEx`1.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.ListEx`1.IsReadOnly"/> properties.</summary>
        </member>
        <member name="F:Tektosyne.Collections.ListEx`1.ReadOnlyWrapper">
            <summary>
            The read-only <see cref="T:Tektosyne.Collections.ListEx`1"/> collection that is returned by the <see cref="M:Tektosyne.Collections.ListEx`1.AsReadOnly"/> method.</summary>
        </member>
        <member name="F:Tektosyne.Collections.ListEx`1.UniqueFlag">
            <summary>
            Backs the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property.</summary>
        </member>
        <member name="F:Tektosyne.Collections.ListEx`1.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <remarks>
            Attempting to modify the <b>Empty</b> collection will raise a <see cref="T:System.NotSupportedException"/>. The collection has zero capacity and is guaranteed to
            never change, as there are no writable references to the collection.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.CheckWritable">
            <summary>
            Checks that the <see cref="T:Tektosyne.Collections.ListEx`1"/> can be modified.</summary>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</exception>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.CheckWritable(`0)">
            <summary>
            Checks that the specified element can be added to the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <param name="item">
            The element to add.</param>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> already contains the specified <paramref name="item"/>, and
            the <see cref="T:Tektosyne.Collections.ListEx`1"/> ensures that all elements are unique.</para></exception>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.CheckWritable(System.Int32,`0)">
            <summary>
            Checks that the specified element can be inserted into the <see cref="T:Tektosyne.Collections.ListEx`1"/> at
            the specified index.</summary>
            <param name="index">
            The zero-based index at which to insert <paramref name="item"/>.</param>
            <param name="item">
            The element to insert.</param>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> already contains the specified <paramref name="item"/> at a
            different index, and the <see cref="T:Tektosyne.Collections.ListEx`1"/> ensures that all elements are unique.
            </para></exception>
            <remarks>
            <b>CheckWritable</b> does not test for duplicate elements if the specified <paramref name="index"/> is less than zero, or equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Add(`0)">
            <summary>
            Adds an element to the end of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <param name="item">
            The element to add.</param>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> already contains the specified <paramref name="item"/>, and
            the <see cref="T:Tektosyne.Collections.ListEx`1"/> ensures that all elements are unique.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.Add(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.System#Collections#IList#Add(System.Object)">
            <summary>
            Adds an element to the end of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <param name="item">
            The element to add. This argument must be compatible with <typeparamref name="T"/>.
            </param>
            <returns>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> index at which the <paramref name="item"/> has been added.
            </returns>
            <exception cref="T:System.InvalidCastException">
            <paramref name="item"/> is not compatible with <typeparamref name="T"/>.</exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> already contains the specified <paramref name="item"/>, and
            the <see cref="T:Tektosyne.Collections.ListEx`1"/> ensures that all elements are unique.</para></exception>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.AddRange(System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Adds the elements of the specified collection to the end of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.
            </summary>
            <param name="collection">
            The <see cref="T:System.Collections.Generic.IEnumerable`1"/> collection whose elements to add.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="collection"/> is a null reference.</exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> already contains one or more elements in the specified 
            <paramref name="collection"/>, and the <see cref="T:Tektosyne.Collections.ListEx`1"/> ensures that all elements
            are unique.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.AddRange(System.Collections.Generic.IEnumerable{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.AsReadOnly">
            <summary>
            Returns a read-only view of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <returns>
            A read-only wrapper around the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</returns>
            <remarks><para>
            Attempting to modify the read-only wrapper returned by <b>AsReadOnly</b> will raise a
            <see cref="T:System.NotSupportedException"/>. Note that the original collection may still change,
            and any such changes will be reflected in the read-only view.
            </para><para>
            <b>AsReadOnly</b> buffers the newly created read-only wrapper when the method is first
            called, and returns the buffered value on subsequent calls.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.BinarySearch(`0)">
            <overloads>
            Uses a binary search algorithm to locate a specific element in the sorted <see cref="T:Tektosyne.Collections.ListEx`1"/> or a portion of it.</overloads>
            <summary>
            Searches the entire sorted <see cref="T:Tektosyne.Collections.ListEx`1"/> for the specified element using the
            default comparer, and returns the zero-based index of the element.</summary>
            <param name="item">
            The element to locate.</param>
            <returns>
            The zero-based index of <paramref name="item"/> in the sorted <see cref="T:Tektosyne.Collections.ListEx`1"/>,
            if <paramref name="item"/> is found; otherwise, a negative number, which is the bitwise
            complement of the index of the next element that is larger than <paramref name="item"/>
            or, if there is no larger element, the bitwise complement of <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The default <see cref="T:System.Collections.Generic.Comparer`1"/> cannot find a generic or non-generic <see cref="T:System.Collections.IComparer"/> implementation for <typeparamref name="T"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.BinarySearch(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.BinarySearch(`0,System.Collections.Generic.IComparer{`0})">
            <summary>
            Searches the entire sorted <see cref="T:Tektosyne.Collections.ListEx`1"/> for the specified element using the
            specified comparer, and returns the zero-based index of the element.</summary>
            <param name="item">
            The element to locate.</param>
            <param name="comparer">
            The <see cref="T:System.Collections.Generic.IComparer`1"/> to use when comparing elements, or a null reference to
            use the default <see cref="T:System.Collections.Generic.Comparer`1"/> for <typeparamref name="T"/>.</param>
            <returns>
            The zero-based index of <paramref name="item"/> in the sorted <see cref="T:Tektosyne.Collections.ListEx`1"/>,
            if <paramref name="item"/> is found; otherwise, a negative number, which is the bitwise
            complement of the index of the next element that is larger than <paramref name="item"/>
            or, if there is no larger element, the bitwise complement of <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="comparer"/> is a null reference, and the default <see cref="T:System.Collections.Generic.Comparer`1"/> cannot find a generic or non-generic <see cref="T:System.Collections.IComparer"/>
            implementation for <typeparamref name="T"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.BinarySearch(`0,System.Collections.Generic.IComparer{`0})"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.BinarySearch(System.Int32,System.Int32,`0,System.Collections.Generic.IComparer{`0})">
            <summary>
            Searches a subrange of the sorted <see cref="T:Tektosyne.Collections.ListEx`1"/> for the specified element
            using the specified comparer, and returns the zero-based index of the element.</summary>
            <param name="index">
            The zero-based starting index of the range to search.</param>
            <param name="count">
            The length of the range to search.</param>
            <param name="item">
            The element to locate.</param>
            <param name="comparer">
            The <see cref="T:System.Collections.Generic.IComparer`1"/> to use when comparing elements, or a null reference to
            use the default <see cref="T:System.Collections.Generic.Comparer`1"/> for <typeparamref name="T"/>.</param>
            <returns>
            The zero-based index of <paramref name="item"/> in the sorted <see cref="T:Tektosyne.Collections.ListEx`1"/>,
            if <paramref name="item"/> is found; otherwise, a negative number, which is the bitwise
            complement of the index of the next element that is larger than <paramref name="item"/>
            or, if there is no larger element, the bitwise complement of <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </returns>
            <exception cref="T:System.ArgumentException">
            <paramref name="index"/> and <paramref name="count"/> do not denote a valid range in the
            <see cref="T:Tektosyne.Collections.ListEx`1"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> or <paramref name="count"/> is less than zero.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="comparer"/> is a null reference, and the default <see cref="T:System.Collections.Generic.Comparer`1"/> cannot find a generic or non-generic <see cref="T:System.Collections.IComparer"/>
            implementation for <typeparamref name="T"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.BinarySearch(System.Int32,System.Int32,`0,System.Collections.Generic.IComparer{`0})"/> for
            details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Clear">
            <summary>
            Removes all elements from the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.Clear"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Clone">
            <summary>
            Creates a shallow copy of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <returns>
            A shallow copy of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</returns>
            <remarks>
            <b>Clone</b> preserves the value of the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property, but not the 
            values of the <see cref="P:Tektosyne.Collections.ListEx`1.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.ListEx`1.IsReadOnly"/> properties.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Contains(`0)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.ListEx`1"/> contains the specified element.</summary>
            <param name="item">
            The element to locate.</param>
            <returns>
            <c>true</c> if <paramref name="item"/> is found in the <see cref="T:Tektosyne.Collections.ListEx`1"/>;
            otherwise, <c>false</c>.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.Contains(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.System#Collections#IList#Contains(System.Object)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.ListEx`1"/> contains the specified element.</summary>
            <param name="item">
            The element to locate. This argument must be compatible with <typeparamref name="T"/>.
            </param>
            <returns>
            <c>true</c> if <paramref name="item"/> is found in the <see cref="T:Tektosyne.Collections.ListEx`1"/>;
            otherwise, <c>false</c>.</returns>
            <exception cref="T:System.InvalidCastException">
            <paramref name="item"/> is not compatible with <typeparamref name="T"/>.</exception>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Copy">
            <summary>
            Creates a deep copy of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <returns>
            A deep copy of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</returns>
            <exception cref="T:System.InvalidCastException">
            <typeparamref name="T"/> does not implement <see cref="T:System.ICloneable"/>.</exception>
            <remarks><para>
            <b>Copy</b> is similar to <see cref="M:Tektosyne.Collections.ListEx`1.Clone"/> but creates a deep copy the <see cref="T:Tektosyne.Collections.ListEx`1"/> by invoking <see cref="M:System.ICloneable.Clone"/> on all elements.
            </para><para>
            <b>Copy</b> preserves the value of the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property, but not the
            values of the <see cref="P:Tektosyne.Collections.ListEx`1.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.ListEx`1.IsReadOnly"/> properties.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.CopyTo(`0[])">
            <overloads>
            Copies the entire <see cref="T:Tektosyne.Collections.ListEx`1"/> to a one-dimensional <see cref="T:System.Array"/>.
            </overloads>
            <summary>
            Copies the entire <see cref="T:Tektosyne.Collections.ListEx`1"/> to a one-dimensional <see cref="T:System.Array"/>,
            starting at the beginning of the target array.</summary>
            <param name="array">
            The one-dimensional <see cref="T:System.Array"/> that is the destination of the elements copied
            from the <see cref="T:Tektosyne.Collections.ListEx`1"/>. The <b>Array</b> must have zero-based indexing.
            </param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="array"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentException">
            The number of elements in the source <see cref="T:Tektosyne.Collections.ListEx`1"/> is greater than the
            available space in the destination <paramref name="array"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.CopyTo(`0[])"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.CopyTo(`0[],System.Int32)">
            <summary>
            Copies the entire <see cref="T:Tektosyne.Collections.ListEx`1"/> to a one-dimensional <see cref="T:System.Array"/>,
            starting at the specified index of the target array.</summary>
            <param name="array">
            The one-dimensional <see cref="T:System.Array"/> that is the destination of the elements copied
            from the <see cref="T:Tektosyne.Collections.ListEx`1"/>. The <b>Array</b> must have zero-based indexing.
            </param>
            <param name="arrayIndex">
            The zero-based index in <paramref name="array"/> at which copying begins.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="array"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="arrayIndex"/> is less than zero.</exception>
            <exception cref="T:System.ArgumentException"><para>
            <paramref name="arrayIndex"/> is equal to or greater than the length of <paramref name="array"/>.
            </para><para>-or-</para><para>
            The number of elements in the source <see cref="T:Tektosyne.Collections.ListEx`1"/> is greater than the
            available space from <paramref name="arrayIndex"/> to the end of the destination
            <paramref name="array"/>.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.CopyTo(`0[],System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.System#Collections#ICollection#CopyTo(System.Array,System.Int32)">
            <summary>
            Copies the entire <see cref="T:Tektosyne.Collections.ListEx`1"/> to a one-dimensional <see cref="T:System.Array"/>,
            starting at the specified index of the target array.</summary>
            <param name="array">
            The one-dimensional <see cref="T:System.Array"/> that is the destination of the elements copied
            from the <see cref="T:Tektosyne.Collections.ListEx`1"/>. The <b>Array</b> must have zero-based indexing.
            </param>
            <param name="arrayIndex">
            The zero-based index in <paramref name="array"/> at which copying begins.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="array"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="arrayIndex"/> is less than zero.</exception>
            <exception cref="T:System.ArgumentException"><para>
            <paramref name="array"/> is multidimensional.
            </para><para>-or-</para><para>
            <paramref name="arrayIndex"/> is equal to or greater than the length of <paramref name="array"/>.
            </para><para>-or-</para><para>
            The number of elements in the source <see cref="T:Tektosyne.Collections.ListEx`1"/> is greater than the
            available space from <paramref name="arrayIndex"/> to the end of the destination
            <paramref name="array"/>.</para></exception>
            <exception cref="T:System.InvalidCastException">
            <typeparamref name="T"/> cannot be cast automatically to the type of the destination
            <paramref name="array"/>.</exception>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.CopyTo(System.Int32,`0[],System.Int32,System.Int32)">
            <summary>
            Copies a subrange of the <see cref="T:Tektosyne.Collections.ListEx`1"/> to a one-dimensional <see cref="T:System.Array"/>, starting at the specified index of the target array.</summary>
            <param name="index">
            The zero-based index in the <see cref="T:Tektosyne.Collections.ListEx`1"/> at which copying begins.</param>
            <param name="array">
            The one-dimensional <see cref="T:System.Array"/> that is the destination of the elements copied
            from the <see cref="T:Tektosyne.Collections.ListEx`1"/>. The <b>Array</b> must have zero-based indexing.
            </param>
            <param name="arrayIndex">
            The zero-based index in <paramref name="array"/> at which copying begins.</param>
            <param name="count">
            The number of elements to copy.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="array"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero.
            </para><para>-or-</para><para>
            <paramref name="arrayIndex"/> is less than zero.
            </para><para>-or-</para><para>
            <paramref name="count"/> is less than zero.</para></exception>
            <exception cref="T:System.ArgumentException"><para>
            <paramref name="index"/> is equal to or greater than the <see cref="P:Tektosyne.Collections.ListEx`1.Count"/> of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.
            </para><para>-or-</para><para>
            <paramref name="count"/> is greater than the number of elements from <paramref name="index"/> to the <see cref="P:Tektosyne.Collections.ListEx`1.Count"/> of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.
            </para><para>-or-</para><para>
            <paramref name="arrayIndex"/> is equal to or greater than the length of <paramref name="array"/>.
            </para><para>-or-</para><para>
            <paramref name="count"/> is greater than the available space from <paramref name="arrayIndex"/> to the end of the destination <paramref name="array"/>.
            </para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.CopyTo(System.Int32,`0[],System.Int32,System.Int32)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Equals(System.Collections.Generic.ICollection{`0})">
            <summary>
            Determines whether the specified collection contains the same elements in the same order
            as the current <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <param name="collection">
            The <see cref="T:System.Collections.Generic.ICollection`1"/> of elements to compare with the current <see cref="T:Tektosyne.Collections.ListEx`1"/>.</param>
            <returns><para>
            <c>true</c> under the following conditions, otherwise <c>false</c>:
            </para><list type="bullet"><item>
            <paramref name="collection"/> is another reference to this <see cref="T:Tektosyne.Collections.ListEx`1"/>.
            </item><item>
            <paramref name="collection"/> is not a null reference, contains the same number of
            elements as this <see cref="T:Tektosyne.Collections.ListEx`1"/>, and all elements compare as equal when
            retrieved in the enumeration sequence for each collection.</item></list></returns>
            <remarks>
            <b>Equals</b> calls <see cref="M:Tektosyne.Collections.CollectionsUtility.SequenceEqual``1(System.Collections.Generic.ICollection{``0},System.Collections.Generic.ICollection{``0})"/> to test the two
            collections for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.GetEnumerator">
            <summary>
            Returns a <see cref="T:System.Collections.Generic.List`1.Enumerator"/> that can iterate through the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <returns>
            A <see cref="T:System.Collections.Generic.List`1.Enumerator"/> for the entire <see cref="T:Tektosyne.Collections.ListEx`1"/>.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.GetEnumerator"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.System#Collections#Generic#IEnumerable{T}#GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can iterate through the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <returns>
            An <see cref="T:System.Collections.Generic.IEnumerator`1"/> for the entire <see cref="T:Tektosyne.Collections.ListEx`1"/>.</returns>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.IEnumerator"/> that can iterate through the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> for the entire <see cref="T:Tektosyne.Collections.ListEx`1"/>.</returns>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.GetRange(System.Int32,System.Int32)">
            <summary>
            Creates a shallow copy of a subrange of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <param name="index">
            The zero-based starting index of the range of elements to copy.</param>
            <param name="count">
            The number of elements to copy.</param>
            <returns>
            A shallow copy of the subrange of the <see cref="T:Tektosyne.Collections.ListEx`1"/> that starts at <paramref name="index"/> and contains <paramref name="count"/> elements.</returns>
            <exception cref="T:System.ArgumentException">
            <paramref name="index"/> and <paramref name="count"/> do not denote a valid range in the
            <see cref="T:Tektosyne.Collections.ListEx`1"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> or <paramref name="count"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.GetRange(System.Int32,System.Int32)"/> for details. Note that this method
            returns a standard <see cref="T:System.Collections.Generic.List`1"/>, not a <see cref="T:Tektosyne.Collections.ListEx`1"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.IndexOf(`0)">
            <overloads>
            Returns the zero-based index of the first occurrence of the specified element in the
            <see cref="T:Tektosyne.Collections.ListEx`1"/> or a portion of it.</overloads>
            <summary>
            Returns the zero-based index of the first occurrence of the specified element in the
            entire <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <param name="item">
            The element to locate.</param>
            <returns>
            The zero-based index of the first occurrence of <paramref name="item"/> in the entire
            <see cref="T:Tektosyne.Collections.ListEx`1"/>, if found; otherwise, -1.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.IndexOf(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.System#Collections#IList#IndexOf(System.Object)">
            <summary>
            Returns the zero-based index of the first occurrence of the specified element in the
            <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <param name="item">
            The element to locate. This argument must be compatible with <typeparamref name="T"/>.
            </param>
            <returns>
            The zero-based index of the first occurrence of <paramref name="item"/> in the <see cref="T:Tektosyne.Collections.ListEx`1"/>, if found; otherwise, -1.</returns>
            <exception cref="T:System.InvalidCastException">
            <paramref name="item"/> is not compatible with <typeparamref name="T"/>.</exception>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.IndexOf(`0,System.Int32)">
            <summary>
            Returns the zero-based index of the first occurrence of the specified element in the
            <see cref="T:Tektosyne.Collections.ListEx`1"/>, starting at the specified index.</summary>
            <param name="item">
            The element to locate.</param>
            <param name="index">
            The zero-based starting index of the search.</param>
            <returns>
            The zero-based index of the first occurrence of <paramref name="item"/> in the subrange
            of the <see cref="T:Tektosyne.Collections.ListEx`1"/> that starts at <paramref name="index"/>, if found;
            otherwise, -1.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> is not a valid index for the <see cref="T:Tektosyne.Collections.ListEx`1"/>.
            </exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.IndexOf(`0,System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.IndexOf(`0,System.Int32,System.Int32)">
            <summary>
            Returns the zero-based index of the first occurrence of the specified element in a
            subrange of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <param name="item">
            The element to locate.</param>
            <param name="index">
            The zero-based starting index of the search.</param>
            <param name="count">
            The number of elements to search.</param>
            <returns>
            The zero-based index of the first occurrence of <paramref name="item"/> in the subrange
            of the <see cref="T:Tektosyne.Collections.ListEx`1"/> that starts at <paramref name="index"/> and contains
            <paramref name="count"/> elements, if found; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> and <paramref name="count"/> do not denote a valid range in the
            <see cref="T:Tektosyne.Collections.ListEx`1"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.IndexOf(`0,System.Int32,System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Insert(System.Int32,`0)">
            <summary>
            Inserts an element into the <see cref="T:Tektosyne.Collections.ListEx`1"/> at the specified index.</summary>
            <param name="index">
            The zero-based index at which to insert <paramref name="item"/>.</param>
            <param name="item">
            The element to insert.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> is less than zero or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> already contains the specified <paramref name="item"/>, and
            the <see cref="T:Tektosyne.Collections.ListEx`1"/> ensures that all elements are unique.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.Insert(System.Int32,`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.System#Collections#IList#Insert(System.Int32,System.Object)">
            <summary>
            Inserts an element into the <see cref="T:Tektosyne.Collections.ListEx`1"/> at the specified index.</summary>
            <param name="index">
            The zero-based index at which to insert <paramref name="item"/>.</param>
            <param name="item">
            The element to insert. This argument must be compatible with <typeparamref name="T"/>.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> is less than zero or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </exception>
            <exception cref="T:System.InvalidCastException">
            <paramref name="item"/> is not compatible with <typeparamref name="T"/>.</exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> already contains the specified <paramref name="item"/>, and
            the <see cref="T:Tektosyne.Collections.ListEx`1"/> ensures that all elements are unique.</para></exception>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.InsertRange(System.Int32,System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Inserts the elements of the specified collection into the <see cref="T:Tektosyne.Collections.ListEx`1"/> at the
            specified index.</summary>
            <param name="index">
            The zero-based index at which to insert <paramref name="collection"/>.</param>
            <param name="collection">
            The <see cref="T:System.Collections.Generic.IEnumerable`1"/> collection whose elements to insert.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="collection"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> is less than zero or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> already contains one or more elements in the specified 
            <paramref name="collection"/>, and the <see cref="T:Tektosyne.Collections.ListEx`1"/> ensures that all elements
            are unique.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.InsertRange(System.Int32,System.Collections.Generic.IEnumerable{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.LastIndexOf(`0)">
            <overloads>
            Returns the zero-based index of the last occurrence of the specified element in the
            <see cref="T:Tektosyne.Collections.ListEx`1"/> or a portion of it.</overloads>
            <summary>
            Returns the zero-based index of the last occurrence of the specified element in the
            entire <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <param name="item">
            The element to locate.</param>
            <returns>
            The zero-based index of the last occurrence of <paramref name="item"/> in the entire
            <see cref="T:Tektosyne.Collections.ListEx`1"/>, if found; otherwise, -1.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.LastIndexOf(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.LastIndexOf(`0,System.Int32)">
            <summary>
            Returns the zero-based index of the last occurrence of the specified element in the
            <see cref="T:Tektosyne.Collections.ListEx`1"/>, ending at the specified index.</summary>
            <param name="item">
            The element to locate.</param>
            <param name="index">
            The zero-based starting index of the backward search.</param>
            <returns>
            The zero-based index of the last occurrence of <paramref name="item"/> in the subrange
            of the <see cref="T:Tektosyne.Collections.ListEx`1"/> that ends at <paramref name="index"/>, if found;
            otherwise, -1.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> is not a valid index for the <see cref="T:Tektosyne.Collections.ListEx`1"/>.
            </exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.LastIndexOf(`0,System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.LastIndexOf(`0,System.Int32,System.Int32)">
            <summary>
            Returns the zero-based index of the last occurrence of the specified element in a
            subrange of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <param name="item">
            The element to locate.</param>
            <param name="index">
            The zero-based starting index of the backward search.</param>
            <param name="count">
            The number of elements to search.</param>
            <returns>
            The zero-based index of the last occurrence of <paramref name="item"/> in the subrange
            of the <see cref="T:Tektosyne.Collections.ListEx`1"/> that contains <paramref name="count"/> elements and ends
            at <paramref name="index"/>, if found; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> and <paramref name="count"/> do not denote a valid range in the
            <see cref="T:Tektosyne.Collections.ListEx`1"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.LastIndexOf(`0,System.Int32,System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Remove(`0)">
            <summary>
            Removes the first occurrence of the specified element from the <see cref="T:Tektosyne.Collections.ListEx`1"/>.
            </summary>
            <param name="item">
            The element to remove.</param>
            <returns>
            <c>true</c> if <paramref name="item"/> was found and removed; otherwise, <c>false</c>.
            </returns>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.Remove(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.System#Collections#IList#Remove(System.Object)">
            <summary>
            Removes the first occurrence of the specified element from the <see cref="T:Tektosyne.Collections.ListEx`1"/>.
            </summary>
            <param name="item">
            The element to remove. This argument must be compatible with <typeparamref name="T"/>.
            </param>
            <exception cref="T:System.InvalidCastException">
            <paramref name="item"/> is not compatible with <typeparamref name="T"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</exception>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.RemoveAt(System.Int32)">
            <summary>
            Removes the element at the specified index in the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <param name="index">
            The zero-based index of the element to remove.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </para></exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.RemoveAt(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.RemoveRange(System.Int32,System.Int32)">
            <summary>
            Removes a range of elements from the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <param name="index">
            The zero-based starting index of the range of elements to remove.</param>
            <param name="count">
            The number of elements to remove.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="index"/> and <paramref name="count"/> do not denote a valid range in the
            <see cref="T:Tektosyne.Collections.ListEx`1"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> or <paramref name="count"/> is less than zero.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.RemoveRange(System.Int32,System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Reverse">
            <overloads>
            Reverses the order of the elements in the <see cref="T:Tektosyne.Collections.ListEx`1"/> or a portion of it.
            </overloads>
            <summary>
            Reverses the order of the elements in the entire <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.Reverse"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Reverse(System.Int32,System.Int32)">
            <summary>
            Reverses the order of the elements in the specified range.</summary>
            <param name="index">
            The zero-based starting index of the range of elements to reverse.</param>
            <param name="count">
            The number of elements to reverse.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="index"/> and <paramref name="count"/> do not denote a valid range of
            elements in the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> or <paramref name="count"/> is less than zero.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.Reverse"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Sort">
            <overloads>
            Sorts the <see cref="T:Tektosyne.Collections.ListEx`1"/> or a portion of it.</overloads>
            <summary>
            Sorts the entire <see cref="T:Tektosyne.Collections.ListEx`1"/> using the default comparer.</summary>
            <exception cref="T:System.InvalidOperationException">
            The default <see cref="T:System.Collections.Generic.Comparer`1"/> cannot find a generic or non-generic <see cref="T:System.Collections.IComparer"/> implementation for <typeparamref name="T"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.Sort"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Sort(System.Comparison{`0})">
            <summary>
            Sorts the entire <see cref="T:Tektosyne.Collections.ListEx`1"/> using the specified comparison method.
            </summary>
            <param name="comparison">
            The <see cref="T:System.Comparison`1"/> method to use when comparing elements.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="comparison"/> is a null reference.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.Sort(System.Comparison{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Sort(System.Collections.Generic.IComparer{`0})">
            <summary>
            Sorts the entire <see cref="T:Tektosyne.Collections.ListEx`1"/> using the specified comparer.</summary>
            <param name="comparer">
            The <see cref="T:System.Collections.Generic.IComparer`1"/> to use when comparing elements, or a null reference to
            use the default <see cref="T:System.Collections.Generic.Comparer`1"/> for <typeparamref name="T"/>.</param>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="comparer"/> is a null reference, and the default <see cref="T:System.Collections.Generic.Comparer`1"/> cannot find a generic or non-generic <see cref="T:System.Collections.IComparer"/>
            implementation for <typeparamref name="T"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.Sort(System.Collections.Generic.IComparer{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Sort(System.Int32,System.Int32,System.Collections.Generic.IComparer{`0})">
            <summary>
            Sorts a subrange of the <see cref="T:Tektosyne.Collections.ListEx`1"/> using the specified comparer.</summary>
            <param name="index">
            The zero-based starting index of the range to sort.</param>
            <param name="count">
            The length of the range to sort.</param>
            <param name="comparer">
            The <see cref="T:System.Collections.Generic.IComparer`1"/> to use when comparing elements, or a null reference to
            use the default <see cref="T:System.Collections.Generic.Comparer`1"/> for <typeparamref name="T"/>.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="index"/> and <paramref name="count"/> do not denote a valid range in the
            <see cref="T:Tektosyne.Collections.ListEx`1"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> or <paramref name="count"/> is less than zero.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="comparer"/> is a null reference, and the default <see cref="T:System.Collections.Generic.Comparer`1"/> cannot find a generic or non-generic <see cref="T:System.Collections.IComparer"/>
            implementation for <typeparamref name="T"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.Sort(System.Int32,System.Int32,System.Collections.Generic.IComparer{`0})"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.ToArray">
            <summary>
            Copies the elements of the <see cref="T:Tektosyne.Collections.ListEx`1"/> to a new <see cref="T:System.Array"/>.
            </summary>
            <returns>
            A one-dimensional <see cref="T:System.Array"/> containing copies of the elements of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.ToArray"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.TrimExcess">
            <summary>
            Sets the capacity to the actual number of elements in the <see cref="T:Tektosyne.Collections.ListEx`1"/>.
            </summary>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.TrimExcess"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.ConvertAll``1(System.Converter{`0,``0})">
            <summary>
            Converts the <see cref="T:Tektosyne.Collections.ListEx`1"/> to another element type.</summary>
            <typeparam name="TOutput">
            The type of all elements in the converted collection.</typeparam>
            <param name="converter">
            A <see cref="T:System.Converter`2"/> method that converts all elements from 
            <typeparamref name="T"/> to <typeparamref name="TOutput"/>.</param>
            <returns>
            A new <see cref="T:System.Collections.Generic.List`1"/> containing the elements copied from the current collection
            and converted to <typeparamref name="TOutput"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="converter"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.ConvertAll``1(System.Converter{`0,``0})"/> for details. Note that this
            method returns a standard <see cref="T:System.Collections.Generic.List`1"/>, not a <see cref="T:Tektosyne.Collections.ListEx`1"/>.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Exists(System.Predicate{`0})">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.ListEx`1"/> contains elements that match the
            conditions defined by the specified predicate.</summary>
            <param name="predicate">
            The <see cref="T:System.Predicate`1"/> method that defines the search conditions.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.ListEx`1"/> contains one or more elements that match the
            conditions defined by <paramref name="predicate"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="predicate"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.Exists(System.Predicate{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.Find(System.Predicate{`0})">
            <summary>
            Finds the first element in the <see cref="T:Tektosyne.Collections.ListEx`1"/> that matches the conditions
            defined by the specified predicate.</summary>
            <param name="predicate">
            The <see cref="T:System.Predicate`1"/> method that defines the search conditions.</param>
            <returns>
            The first element that matches the conditions defined by <paramref name="predicate"/>,
            if found; otherwise, the default value for <typeparamref name="T"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="predicate"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.Find(System.Predicate{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.FindAll(System.Predicate{`0})">
            <summary>
            Finds all elements in the <see cref="T:Tektosyne.Collections.ListEx`1"/> that match the conditions defined by
            the specified predicate.</summary>
            <param name="predicate">
            The <see cref="T:System.Predicate`1"/> method that defines the search conditions.</param>
            <returns>
            A new <see cref="T:System.Collections.Generic.List`1"/> containing all elements that match the conditions defined by
            <paramref name="predicate"/>, if found; otherwise, an empty <b>List</b>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="predicate"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.FindAll(System.Predicate{`0})"/> for details. Note that this method
            returns a standard <see cref="T:System.Collections.Generic.List`1"/>, not a <see cref="T:Tektosyne.Collections.ListEx`1"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.FindIndex(System.Predicate{`0})">
            <overloads>
            Returns the zero-based index of the first element in the <see cref="T:Tektosyne.Collections.ListEx`1"/>, or a
            portion of it, that matches the conditions defined by the specified predicate.
            </overloads>
            <summary>
            Returns the zero-based index of the first element in the entire <see cref="T:Tektosyne.Collections.ListEx`1"/>
            that matches the conditions defined by the specified predicate.</summary>
            <param name="predicate">
            The <see cref="T:System.Predicate`1"/> method that defines the search conditions.</param>
            <returns>
            The zero-based index of the first element that matches the conditions defined by
            <paramref name="predicate"/>, if found; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="predicate"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.FindIndex(System.Predicate{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.FindIndex(System.Int32,System.Predicate{`0})">
            <summary>
            Returns the zero-based index of the first element in the <see cref="T:Tektosyne.Collections.ListEx`1"/>,
            starting at the specified index, that matches the conditions defined by the specified
            predicate.</summary>
            <param name="index">
            The zero-based starting index of the search.</param>
            <param name="predicate">
            The <see cref="T:System.Predicate`1"/> method that defines the search conditions.</param>
            <returns>
            The zero-based index of the first element that matches the conditions defined by
            <paramref name="predicate"/>, if found; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="predicate"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> is not a valid index for the <see cref="T:Tektosyne.Collections.ListEx`1"/>.
            </exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.FindIndex(System.Int32,System.Predicate{`0})"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.FindIndex(System.Int32,System.Int32,System.Predicate{`0})">
            <summary>
            Returns the zero-based index of the first element in a subrange of the <see cref="T:Tektosyne.Collections.ListEx`1"/> that matches the conditions defined by the specified predicate.
            </summary>
            <param name="index">
            The zero-based starting index of the search.</param>
            <param name="count">
            The number of elements to search.</param>
            <param name="predicate">
            The <see cref="T:System.Predicate`1"/> method that defines the search conditions.</param>
            <returns>
            The zero-based index of the first element that matches the conditions defined by
            <paramref name="predicate"/>, if found; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="predicate"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> and <paramref name="count"/> do not denote a valid range in the
            <see cref="T:Tektosyne.Collections.ListEx`1"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.FindIndex(System.Int32,System.Int32,System.Predicate{`0})"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.FindLast(System.Predicate{`0})">
            <summary>
            Finds the last element in the <see cref="T:Tektosyne.Collections.ListEx`1"/> that matches the conditions
            defined by the specified predicate.</summary>
            <param name="predicate">
            The <see cref="T:System.Predicate`1"/> method that defines the search conditions.</param>
            <returns>
            The last element that matches the conditions defined by <paramref name="predicate"/>, if
            found; otherwise, the default value for <typeparamref name="T"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="predicate"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.FindLast(System.Predicate{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.FindLastIndex(System.Predicate{`0})">
            <overloads>
            Returns the zero-based index of the last element in the <see cref="T:Tektosyne.Collections.ListEx`1"/>, or a
            portion of it, that matches the conditions defined by the specified predicate.
            </overloads>
            <summary>
            Returns the zero-based index of the last element in the entire <see cref="T:Tektosyne.Collections.ListEx`1"/>
            that matches the conditions defined by the specified predicate.</summary>
            <param name="predicate">
            The <see cref="T:System.Predicate`1"/> method that defines the search conditions.</param>
            <returns>
            The zero-based index of the last element that matches the conditions defined by
            <paramref name="predicate"/>, if found; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="predicate"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.FindLastIndex(System.Predicate{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.FindLastIndex(System.Int32,System.Predicate{`0})">
            <summary>
            Returns the zero-based index of the last element in the <see cref="T:Tektosyne.Collections.ListEx`1"/>,
            ending at the specified index, that matches the conditions defined by the specified
            predicate.</summary>
            <param name="index">
            The zero-based starting index of the backward search.</param>
            <param name="predicate">
            The <see cref="T:System.Predicate`1"/> method that defines the search conditions.</param>
            <returns>
            The zero-based index of the last element that matches the conditions defined by
            <paramref name="predicate"/>, if found; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="predicate"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> is not a valid index for the <see cref="T:Tektosyne.Collections.ListEx`1"/>.
            </exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.FindLastIndex(System.Int32,System.Predicate{`0})"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.FindLastIndex(System.Int32,System.Int32,System.Predicate{`0})">
            <summary>
            Returns the zero-based index of the last element in a subrange of the <see cref="T:Tektosyne.Collections.ListEx`1"/> that matches the conditions defined by the specified predicate.
            </summary>
            <param name="index">
            The zero-based starting index of the backward search.</param>
            <param name="count">
            The number of elements to search.</param>
            <param name="predicate">
            The <see cref="T:System.Predicate`1"/> method that defines the search conditions.</param>
            <returns>
            The zero-based index of the last element that matches the conditions defined by
            <paramref name="predicate"/>, if found; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="predicate"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> and <paramref name="count"/> do not denote a valid range in the
            <see cref="T:Tektosyne.Collections.ListEx`1"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.FindLastIndex(System.Int32,System.Int32,System.Predicate{`0})"/> for
            details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.ForEach(System.Action{`0})">
            <summary>
            Performs the specified action on each element in the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <param name="action">
            The <see cref="T:System.Action`1"/> method to perform on each element.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="action"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.ForEach(System.Action{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.RemoveAll(System.Predicate{`0})">
            <summary>
            Removes all elements from the <see cref="T:Tektosyne.Collections.ListEx`1"/> that match the conditions defined
            by the specified predicate.</summary>
            <param name="predicate">
            The <see cref="T:System.Predicate`1"/> method that defines the search conditions.</param>
            <returns>
            The number of elements that were removed from the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="predicate"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.RemoveAll(System.Predicate{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.ListEx`1.TrueForAll(System.Predicate{`0})">
            <summary>
            Determines whether all elements in the <see cref="T:Tektosyne.Collections.ListEx`1"/> match the conditions
            defined by the specified predicate.</summary>
            <param name="predicate">
            The <see cref="T:System.Predicate`1"/> method that defines the search conditions.</param>
            <returns>
            <c>true</c> if all elements in the <see cref="T:Tektosyne.Collections.ListEx`1"/> match the conditions defined
            by <paramref name="predicate"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="predicate"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.TrueForAll(System.Predicate{`0})"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.ListEx`1.Capacity">
            <summary>
            Gets or sets the capacity of the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <value>
            The number of elements that the <see cref="T:Tektosyne.Collections.ListEx`1"/> can contain.</value>
            <exception cref="T:System.ArgumentOutOfRangeException">
            The property is set to a value that is less than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The property is set, and the <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.List`1.Capacity"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.ListEx`1.Count">
            <summary>
            Gets the number of elements contained in the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</summary>
            <value>
            The number of elements contained in the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.List`1.Count"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.ListEx`1.IsFixedSize">
            <summary>
            Gets a value indicating whether the <see cref="T:Tektosyne.Collections.ListEx`1"/> has a fixed size.</summary>
            <value>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.ListEx`1"/> has a fixed size; otherwise, <c>false</c>.
            The default is <c>false</c>.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.IList.IsFixedSize"/> for details.
            </para><para>
            This property always returns the same value as the <see cref="P:Tektosyne.Collections.ListEx`1.IsReadOnly"/> property,
            as none of the <b>Tektosyne.Collections</b> classes support writeable collections with
            a fixed size.</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.ListEx`1.IsReadOnly">
            <summary>
            Gets a value indicating whether the <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.</summary>
            <value>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only; otherwise, <c>false</c>. The
            default is <c>false</c>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.IList.IsReadOnly"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.ListEx`1.IsSynchronized">
            <summary>
            Gets a value indicating whether access to the <see cref="T:Tektosyne.Collections.ListEx`1"/> is synchronized
            (thread-safe).</summary>
            <value>
            <c>true</c> if access to the <see cref="T:Tektosyne.Collections.ListEx`1"/> is synchronized (thread-safe);
            otherwise, <c>false</c>. The default is <c>false</c>.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.ICollection.IsSynchronized"/> for details.
            </para><para>
            This property is provided for backwards compatibility only, as none of the
            <b>Tektosyne.Collections</b> classes support synchronized wrappers.</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.ListEx`1.IsUnique">
            <summary>
            Gets a value indicating whether the <see cref="T:Tektosyne.Collections.ListEx`1"/> ensures that all elements
            are unique.</summary>
            <value>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.ListEx`1"/> ensures that all elements are unique;
            otherwise, <c>false</c>. The default is <c>false</c>.</value>
            <remarks><para>
            <b>IsUnique</b> provides a set-like collection by ensuring that all elements in the <see cref="T:Tektosyne.Collections.ListEx`1"/> are unique. When the property is <c>true</c>, any attempt to add an
            element that is already contained in the <see cref="T:Tektosyne.Collections.ListEx`1"/> will cause a <see cref="T:System.NotSupportedException"/>.
            </para><note type="implementnotes">
            Due to the necessary test for duplicate elements, the addition of a new element becomes
            an O(<em>N</em>) operation when <b>IsUnique</b> is <c>true</c>.</note></remarks>
        </member>
        <member name="P:Tektosyne.Collections.ListEx`1.Item(System.Int32)">
            <summary>
            Gets or sets the element at the specified index.</summary>
            <param name="index">
            The zero-based index of the element to get or set.</param>
            <value>
            The element at the specified <paramref name="index"/>.</value>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </para></exception>
            <exception cref="T:System.NotSupportedException"><para>
            The property is set, and the <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.
            </para><para>-or-</para><para>
            The property is set, the <see cref="T:Tektosyne.Collections.ListEx`1"/> already contains the specified element
            at a different index, and the <see cref="T:Tektosyne.Collections.ListEx`1"/> ensures that all elements are
            unique.</para></exception>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.List`1.Item(System.Int32)"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.ListEx`1.System#Collections#IList#Item(System.Int32)">
            <summary>
            Gets or sets the element at the specified index.</summary>
            <param name="index">
            The zero-based index of the element to get or set.</param>
            <value>
            The element at the specified <paramref name="index"/>. When the property is set, this
            value must be compatible with <typeparamref name="T"/>.</value>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </para></exception>
            <exception cref="T:System.InvalidCastException">
            The property is set to a value that is not compatible with <typeparamref name="T"/>.
            </exception>
            <exception cref="T:System.NotSupportedException"><para>
            The property is set, and the <see cref="T:Tektosyne.Collections.ListEx`1"/> is read-only.
            </para><para>-or-</para><para>
            The property is set, the <see cref="T:Tektosyne.Collections.ListEx`1"/> already contains the specified element
            at a different index, and the <see cref="T:Tektosyne.Collections.ListEx`1"/> ensures that all elements are
            unique.</para></exception>
        </member>
        <member name="P:Tektosyne.Collections.ListEx`1.SyncRoot">
            <summary>
            Gets an object that can be used to synchronize access to the <see cref="T:Tektosyne.Collections.ListEx`1"/>.
            </summary>
            <value>
            An object that can be used to synchronize access to the <see cref="T:Tektosyne.Collections.ListEx`1"/>.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.ICollection.SyncRoot"/> for details.
            </para><para>
            When synchronizing multi-threaded access to the <see cref="T:Tektosyne.Collections.ListEx`1"/>, obtain a lock
            on the <b>SyncRoot</b> object rather than the collection itself.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.#ctor(System.Converter{`1,`0})">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> class.
            </overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> class that
            is empty and has the default initial capacity.</summary>
            <param name="keyConverter">
            The initial value for the <see cref="P:Tektosyne.Collections.MultiKeyedList`2.KeyConverter"/> property.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="keyConverter"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.#ctor(System.Converter{`1,`0},System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> class that
            is empty, has the default initial capacity, and optionally ensures that all keys are
            unique.</summary>
            <param name="keyConverter">
            The initial value for the <see cref="P:Tektosyne.Collections.MultiKeyedList`2.KeyConverter"/> property.</param>
            <param name="isUnique">
            The initial value for the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="keyConverter"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.#ctor(System.Collections.Generic.IEnumerable{`1},System.Converter{`1,`0})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> class that
            contains elements copied from the specified collection and has sufficient capacity to 
            accommodate the number of elements copied.</summary>
            <param name="collection">
            The <see cref="T:System.Collections.Generic.IEnumerable`1"/> collection whose <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements are copied to the new collection.</param>
            <param name="keyConverter">
            The initial value for the <see cref="P:Tektosyne.Collections.MultiKeyedList`2.KeyConverter"/> property.</param>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="collection"/> or <paramref name="keyConverter"/>is a null reference.
            </para><para>-or-</para><para>
            <paramref name="collection"/> contains an element whose embedded key is a null
            reference.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Collections.Generic.IEnumerable{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.#ctor(System.Int32,System.Converter{`1,`0})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> class that
            is empty and has the specified initial capacity.</summary>
            <param name="capacity">
            The number of elements that the new <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> is
            initially capable of storing.</param>
            <param name="keyConverter">
            The initial value for the <see cref="P:Tektosyne.Collections.MultiKeyedList`2.KeyConverter"/> property.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="keyConverter"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="capacity"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.#ctor(System.Int32,System.Converter{`1,`0},System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> class that
            is empty, has the specified initial capacity, and optionally ensures that all keys are
            unique.</summary>
            <param name="capacity">
            The number of elements that the new <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> is
            initially capable of storing.</param>
            <param name="keyConverter">
            The initial value for the <see cref="P:Tektosyne.Collections.MultiKeyedList`2.KeyConverter"/> property.</param>
            <param name="isUnique">
            The initial value for the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="keyConverter"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="capacity"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.#ctor(Tektosyne.Collections.MultiKeyedList{`0,`1})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> class that
            contains elements copied from the specified instance and has sufficient capacity to 
            accommodate the number of elements copied.</summary>
            <param name="list">
            The <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> collection whose elements are copied to
            the new collection.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Collections.Generic.IEnumerable{`0})"/> for details. This constructor also
            copies the values of the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> and <see cref="P:Tektosyne.Collections.MultiKeyedList`2.KeyConverter"/>
            properties.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.#ctor(Tektosyne.Collections.MultiKeyedList{`0,`1},System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> class that
            is a read-only view of the specified instance.</summary>
            <param name="list">
            The <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> collection that provides the initial
            values for the <see cref="F:Tektosyne.Collections.ListEx`1.InnerList"/> and <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/>
            fields and for the <see cref="P:Tektosyne.Collections.MultiKeyedList`2.KeyConverter"/> property.</param>
            <param name="readOnly">
            The initial value for the <see cref="F:Tektosyne.Collections.ListEx`1.ReadOnlyFlag"/> field. This argument must
            be <c>true</c>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="readOnly"/> is <c>false</c>.</exception>
            <remarks>
            This constructor is used to create a read-only wrapper around an existing collection.
            The new instance shares the data of the specified <paramref name="list"/>.</remarks>
        </member>
        <member name="F:Tektosyne.Collections.MultiKeyedList`2._keyConverter">
            <summary>
            Backs the <see cref="P:Tektosyne.Collections.MultiKeyedList`2.KeyConverter"/> property.</summary>
        </member>
        <member name="F:Tektosyne.Collections.MultiKeyedList`2.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.</summary>
            <remarks><para>
            Attempting to modify the <b>Empty</b> collection will raise a <see cref="T:System.NotSupportedException"/>. The collection has zero capacity and is guaranteed to
            never change, as there are no writable references to the collection.
            </para><para>
            The <see cref="T:System.Converter`2"/> used by <b>Empty</b> is a pseudo-converter
            that maps all values to the default key.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.CheckWritable(`1)">
            <summary>
            Checks that the specified value can be added to the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.</summary>
            <param name="value">
            The value to add.</param>
            <exception cref="T:System.ArgumentNullException">
            The key embedded in <paramref name="value"/> is a null reference.</exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> already contains the key embedded in
            <paramref name="value"/>, and the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> ensures
            that all keys are unique.</para></exception>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.CheckWritable(System.Int32,`1)">
            <summary>
            Checks that the specified value can be inserted into the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> at the specified index.</summary>
            <param name="index">
            The zero-based index at which to insert <paramref name="value"/>.</param>
            <param name="value">
            The value to insert.</param>
            <exception cref="T:System.ArgumentNullException">
            The key embedded in <paramref name="value"/> is a null reference.</exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> already contains the key embedded in
            <paramref name="value"/> at a different index, and the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> ensures that all keys are unique.</para></exception>
            <remarks>
            <b>CheckWritable</b> does not test for duplicate keys if the specified <paramref name="index"/> is less than zero, or equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.AsReadOnly">
            <summary>
            Creates a read-only view of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.</summary>
            <returns>
            A read-only wrapper around the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.</returns>
            <remarks><para>
            Attempting to modify the read-only wrapper returned by <b>AsReadOnly</b> will raise a
            <see cref="T:System.NotSupportedException"/>. Note that the original collection may still change,
            and any such changes will be reflected in the read-only view.
            </para><para>
            <b>AsReadOnly</b> buffers the newly created read-only wrapper when the method is first
            called, and returns the buffered value on subsequent calls.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.Clone">
            <summary>
            Creates a shallow copy of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.</summary>
            <returns>
            A shallow copy of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.</returns>
            <remarks>
            <b>Clone</b> preserves the values of the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> and <see cref="P:Tektosyne.Collections.MultiKeyedList`2.KeyConverter"/> properties, but not the values of the <see cref="P:Tektosyne.Collections.ListEx`1.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.ListEx`1.IsReadOnly"/> properties.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.ContainsKey(`0)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> contains the specified
            key.</summary>
            <param name="key">
            The key to locate.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> contains an element with
            the specified <paramref name="key"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.ContainsKey(`0)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.Copy">
            <summary>
            Creates a deep copy of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.</summary>
            <returns>
            A deep copy of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.</returns>
            <exception cref="T:System.InvalidCastException">
            <typeparamref name="TValue"/> does not implement <see cref="T:System.ICloneable"/>.</exception>
            <remarks><para>
            <b>Copy</b> is similar to <see cref="M:Tektosyne.Collections.MultiKeyedList`2.Clone"/> but creates a deep copy the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> by invoking <see cref="M:System.ICloneable.Clone"/> on all
            <typeparamref name="TValue"/> elements.
            </para><para>
            <b>Copy</b> preserves the values of the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> and <see cref="P:Tektosyne.Collections.MultiKeyedList`2.KeyConverter"/> properties, but not the values of the <see cref="P:Tektosyne.Collections.ListEx`1.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.ListEx`1.IsReadOnly"/> properties.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.GetByIndex(System.Int32)">
            <summary>
            Gets the value at the specified index.</summary>
            <param name="index">
            The zero-based index of the value to get.</param>
            <returns>
            The value at the specified <paramref name="index"/> in the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.SortedList.GetByIndex(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.GetByKey(`0)">
            <summary>
            Gets the value associated with the first occurrence of the specified key.</summary>
            <param name="key">
            The key whose value to get.</param>
            <returns>
            The value associated with the first occurrence of <paramref name="key"/> in the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">
            <paramref name="key"/> was not found in the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.
            </exception>
            <remarks>
            <b>GetByKey</b> has the same effect as reading the key indexer, <see cref="P:Tektosyne.Collections.MultiKeyedList`2.Item(`0)"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.GetKey(System.Int32)">
            <overloads>
            Gets the key associated with the specified value.</overloads>
            <summary>
            Gets the key at the specified index of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.
            </summary>
            <param name="index">
            The zero-based index of the key to get.</param>
            <returns>
            The key at the specified <paramref name="index"/> of the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            The <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> element at the specified <paramref name="index"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.SortedList.GetKey(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.IndexOfKey(`0)">
            <summary>
            Returns the zero-based index of the first occurrence of the specified key.</summary>
            <param name="key">
            The key to locate.</param>
            <returns>
            The zero-based index of the first occurrence of <paramref name="key"/> in the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>, if found; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.IndexOfKey(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.SetByIndex(System.Int32,`1)">
            <summary>
            Sets the value at the specified index.</summary>
            <param name="index">
            The zero-based index of the value to set.</param>
            <param name="value">
            The value to store at the specified <paramref name="index"/> in the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.</param>
            <exception cref="T:System.ArgumentNullException">
            The key embedded in <paramref name="value"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </para></exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> already contains the key embedded in 
            <paramref name="value"/> at a different index, and the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> ensures that all keys are unique.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.SortedList.SetByIndex(System.Int32,System.Object)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.MultiKeyedList`2.TryGetValue(`0,`1@)">
            <summary>
            Gets the value associated with the first occurrence of the specified key.</summary>
            <param name="key">
            The key whose value to get.</param>
            <param name="value">
            The value associated with the first occurrence of <paramref name="key"/>, if found;
            otherwise, the default value for <typeparamref name="TValue"/>.</param>
            <returns>
            <c>true</c> if <paramref name="key"/> was found; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.TryGetValue(`0,`1@)"/> for details.
            </remarks>
        </member>
        <member name="P:Tektosyne.Collections.MultiKeyedList`2.Item(`0)">
            <summary>
            Gets the value associated with the first occurrence of the specified key.</summary>
            <param name="key">
            The key whose value to get.</param>
            <value>
            The value associated with the first occurrence of the specified <paramref name="key"/>.
            </value>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">
            <paramref name="key"/> does not exist in the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/>.
            </exception>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedList`2.Item(`0)"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.MultiKeyedList`2.KeyConverter">
            <summary>
            Gets or sets the <see cref="T:System.Converter`2"/> that converts an element in the
            <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> into its associated key.</summary>
            <value>
            The <see cref="T:System.Converter`2"/> method that converts a specified <typeparamref name="TValue"/> element into its associated <typeparamref name="TKey"/> key.</value>
            <exception cref="T:System.ArgumentNullException">
            The property is set to a null reference.</exception>
            <remarks>
            <b>KeyConverter</b> never returns a null reference. The method should throw an <see cref="T:System.ArgumentNullException"/> when invoked with a null reference.</remarks>
        </member>
        <member name="T:Tektosyne.Windows.DefaultTheme">
            <summary>
            Specifies the default themes predefined by Windows Presentation Foundation.</summary>
            <remarks>
            <b>DefaultTheme</b> defines all possible combinations of basic Windows theme and
            (non-standard) color variant that ship with Windows Presentation Foundation.</remarks>
        </member>
        <member name="F:Tektosyne.Windows.DefaultTheme.System">
            <summary>
            Specifies that WPF should select one of the other <see cref="T:Tektosyne.Windows.DefaultTheme"/> values,
            based on the current Windows version and user settings.</summary>
        </member>
        <member name="F:Tektosyne.Windows.DefaultTheme.Classic">
            <summary>
            Specifies the Classic theme used by Windows 2000 and earlier.</summary>
        </member>
        <member name="F:Tektosyne.Windows.DefaultTheme.Luna">
            <summary>
            Specifies the Luna theme used by Windows XP.</summary>
        </member>
        <member name="F:Tektosyne.Windows.DefaultTheme.LunaHomestead">
            <summary>
            Specifies the Luna theme used by Windows XP (green variant).</summary>
        </member>
        <member name="F:Tektosyne.Windows.DefaultTheme.LunaMetallic">
            <summary>
            Specifies the Luna theme used by Windows XP (silver variant).</summary>
        </member>
        <member name="F:Tektosyne.Windows.DefaultTheme.Royale">
            <summary>
            Specifies the Royale theme used by Windows XP Media Center Edition.</summary>
        </member>
        <member name="F:Tektosyne.Windows.DefaultTheme.Aero">
            <summary>
            Specifies the Aero theme used by Windows Vista.</summary>
        </member>
        <member name="T:Tektosyne.Win32Api.MapiRecipDesc">
            <summary>
            Contains information about a message sender or recipient.</summary>
            <remarks>
            This type mirrors the <b>MapiRecipDesc</b> (Simple MAPI) structure defined in the Platform
            SDK. Please refer to the Microsoft Platform SDK documentation for details.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiRecipDesc.ulReserved">
            <summary>
            Reserved; must be zero.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiRecipDesc.ulRecipClass">
            <summary>
            Contains a numeric value that indicates the type of recipient.</summary>
            <remarks><para>
            Possible values are:
            </para><list type="table"><listheader>
            <term>Value</term><description>Constant</description><description>Meaning</description>
            </listheader><item>
            <term>0</term><description><see cref="F:Tektosyne.Win32Api.MapiRecipClass.MAPI_ORIG"/></description>
            <description>Indicates the original sender of the message.</description>
            </item><item>
            <term>1</term><description><see cref="F:Tektosyne.Win32Api.MapiRecipClass.MAPI_TO"/></description>
            <description>Indicates a primary message recipient.</description>
            </item><item>
            <term>2</term><description><see cref="F:Tektosyne.Win32Api.MapiRecipClass.MAPI_CC"/></description>
            <description>Indicates a recipient of a message copy.</description>
            </item><item>
            <term>3</term><description><see cref="F:Tektosyne.Win32Api.MapiRecipClass.MAPI_BCC"/></description>
            <description>Indicates a recipient of a blind copy.</description>
            </item></list></remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiRecipDesc.lpszName">
            <summary>
            The display name of the message recipient or sender.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiRecipDesc.lpszAddress">
            <summary>
            The provider-specific address of the recipient or sender.</summary>
            <remarks><para>
            This address is provider-specific message delivery data. Generally, the messaging system
            provides such addresses for inbound messages. For outbound messages, the
            <b>lpszAddress</b> member can contain an address entered by the user for a recipient not
            in an address book (that is, a custom recipient).
            </para><para>
            The format of an address pointed to by the <b>lpszAddress</b> member is [<em>address
            type</em>][<em>e-mail address</em>]. Examples of valid addresses are
            <c>FAX:206-555-1212</c> and <c>SMTP:M@X.COM</c>.</para></remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiRecipDesc.ulEIDSize">
            <summary>
            The size, in bytes, of the entry identifier pointed to by the <see cref="F:Tektosyne.Win32Api.MapiRecipDesc.lpEntryID"/>
            member.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiRecipDesc.lpEntryID">
            <summary>
            A pointer to an opaque entry identifier used by a messaging system service provider to
            identify the message recipient.</summary>
            <remarks>
            Entry identifiers have meaning only for the service provider; client applications will
            not be able to decipher them. The messaging system uses this member to return valid
            entry identifiers for all recipients or senders listed in the address book.</remarks>
        </member>
        <member name="T:Tektosyne.Win32Api.MemoryStatusEx">
            <summary>
            Contains information about the current state of both physical and virtual memory, including
            extended memory.</summary>
            <remarks>
            This type mirrors the <b>MEMORYSTATUSEX</b> structure defined in the Platform SDK. Please
            refer to the Microsoft Platform SDK documentation for details.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatusEx.dwLength">
            <summary>
            The size of the <see cref="T:Tektosyne.Win32Api.MemoryStatusEx"/> structure, in bytes.</summary>
            <remarks>
            You must set this member before calling <see cref="M:Tektosyne.Win32Api.Kernel.GlobalMemoryStatusEx(Tektosyne.Win32Api.MemoryStatusEx)"/>.
            </remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatusEx.dwMemoryLoad">
            <summary>
            The approximate percentage of total physical memory that is in use.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatusEx.ulTotalPhys">
            <summary>
            The amount of actual physical memory, in bytes.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatusEx.ulAvailPhys">
            <summary>
            The amount of physical memory currently available, in bytes.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatusEx.ulTotalPageFile">
            <summary>
            The current committed memory limit for the system or the current process, whichever is
            smaller, in bytes.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatusEx.ulAvailPageFile">
            <summary>
            The maximum amount of memory the current process can commit, in bytes.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatusEx.ulTotalVirtual">
            <summary>
            The size of the user-mode portion of the virtual address space of the calling process,
            in bytes.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatusEx.ulAvailVirtual">
            <summary>
            The amount of unreserved and uncommitted memory currently in the user-mode portion of
            the virtual address space of the calling process, in bytes.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatusEx.ulAvailExtendedVirtual">
            <summary>Reserved; always zero.</summary>
        </member>
        <member name="T:Tektosyne.Collections.KeyValueList`2">
            <summary>
            Provides a generic collection of key-and-value pairs that retain their insertion order and
            are accessible by index and by key.</summary>
            <typeparam name="TKey">
            The type of all keys in the collection. Keys cannot be null references.</typeparam>
            <typeparam name="TValue">
            The type of all values that are associated with the keys. If <typeparamref name="TValue"/>
            is a reference type, values may be null references.</typeparam>
            <remarks><para>
            <b>KeyValueList</b> provides a <see cref="T:Tektosyne.Collections.ListEx`1"/> that contains <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements. Several additional methods adopted from the
            <see cref="T:System.Collections.Generic.SortedList`2"/> class allow direct access by key and by value.
            </para><para>
            The collection may contain multiple identical keys, unless <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/>
            is <c>true</c>. All key access methods return the first occurrence of the specified key.
            Access by index is an O(1) operation but access by key or by value are both O(<em>N</em>)
            operations, where <em>N</em> is the number of key-and-value pairs in the collection.
            </para><para>
            The <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> property of any <typeparamref name="TValue"/> that
            implements the <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> interface is automatically checked against
            the associated collection key when a key or value is changed or inserted.
            </para><para>
            <b>KeyValueList</b> also provides several extra features inherited from <see cref="T:Tektosyne.Collections.ListEx`1"/>; please see there for details. Note that <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/>
            now checks for unique keys, rather than unique key-and-value pairs.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> class.
            </overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> class that is
            empty and has the default initial capacity.</summary>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.#ctor(System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> class that
            is empty, has the default initial capacity, and optionally ensures that all keys are
            unique.</summary>
            <param name="isUnique">
            The initial value for the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property.</param>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.#ctor(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{`0,`1}})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> class that
            contains elements copied from the specified collection and has sufficient capacity to 
            accommodate the number of elements copied.</summary>
            <param name="collection">
            The <see cref="T:System.Collections.Generic.IEnumerable`1"/> collection whose <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements are copied to the new collection.</param>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="collection"/> is a null reference.
            </para><para>-or-</para><para>
            <paramref name="collection"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component is a null reference.</para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="collection"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> component is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance, and whose
            <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component differs from that instance's
            <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Collections.Generic.IEnumerable{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> class that is
            empty and has the specified initial capacity.</summary>
            <param name="capacity">
            The number of elements that the new <see cref="T:Tektosyne.Collections.KeyValueList`2"/> is
            initially capable of storing.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="capacity"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.#ctor(System.Int32,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> class that
            is empty, has the specified initial capacity, and optionally ensures that all keys are
            unique.</summary>
            <param name="capacity">
            The number of elements that the new <see cref="T:Tektosyne.Collections.KeyValueList`2"/> is
            initially capable of storing.</param>
            <param name="isUnique">
            The initial value for the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="capacity"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.#ctor(Tektosyne.Collections.KeyValueList{`0,`1})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> class that
            contains elements copied from the specified instance and has sufficient capacity to 
            accommodate the number of elements copied.</summary>
            <param name="list">
            The <see cref="T:Tektosyne.Collections.KeyValueList`2"/> collection whose elements are copied to the
            new collection.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Collections.Generic.IEnumerable{`0})"/> for details. This constructor also
            copies the value of the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.#ctor(Tektosyne.Collections.KeyValueList{`0,`1},System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> class that is
            a read-only view of the specified instance.</summary>
            <param name="list">
            The <see cref="T:Tektosyne.Collections.KeyValueList`2"/> collection that provides the initial values
            for the <see cref="F:Tektosyne.Collections.ListEx`1.InnerList"/> and <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> fields.
            </param>
            <param name="readOnly">
            The initial value for the <see cref="F:Tektosyne.Collections.ListEx`1.ReadOnlyFlag"/> field. This argument must
            be <c>true</c>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="readOnly"/> is <c>false</c>.</exception>
            <remarks>
            This constructor is used to create a read-only wrapper around an existing collection.
            The new instance shares the data of the specified <paramref name="list"/>.</remarks>
        </member>
        <member name="F:Tektosyne.Collections.KeyValueList`2._keys">
            <summary>
            Backs the <see cref="P:Tektosyne.Collections.KeyValueList`2.Keys"/> property.</summary>
        </member>
        <member name="F:Tektosyne.Collections.KeyValueList`2._values">
            <summary>
            Backs the <see cref="P:Tektosyne.Collections.KeyValueList`2.Values"/> property.</summary>
        </member>
        <member name="F:Tektosyne.Collections.KeyValueList`2.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</summary>
            <remarks>
            Attempting to modify the <b>Empty</b> collection will raise a <see cref="T:System.NotSupportedException"/>. The collection has zero capacity and is guaranteed to
            never change, as there are no writable references to the collection.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.CheckTargetArray(System.Array,System.Int32)">
            <summary>
            Checks the bounds of the specified array and the specified starting index against the
            size of the <see cref="F:Tektosyne.Collections.ListEx`1.InnerList"/>.</summary>
            <param name="array">
            The one-dimensional <see cref="T:System.Array"/> that is the destination for elements copied from
            the <see cref="F:Tektosyne.Collections.ListEx`1.InnerList"/>. The <b>Array</b> must have zero-based indexing.
            </param>
            <param name="arrayIndex">
            The zero-based index in <paramref name="array"/> at which copying begins.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="array"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="arrayIndex"/> is less than zero.</exception>
            <exception cref="T:System.ArgumentException"><para>
            <paramref name="array"/> is multidimensional.
            </para><para>-or-</para><para>
            <paramref name="arrayIndex"/> is equal to or greater than the length of <paramref name="array"/>.
            </para><para>-or-</para><para>
            The number of elements in the <see cref="F:Tektosyne.Collections.ListEx`1.InnerList"/> is greater than the
            available space from <paramref name="arrayIndex"/> to the end of the destination
            <paramref name="array"/>.</para></exception>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.CheckWritable(System.Collections.Generic.KeyValuePair{`0,`1})">
            <summary>
            Checks that the specified key-and-value pair can be added to the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</summary>
            <param name="pair">
            The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> element to add.</param>
            <exception cref="T:System.ArgumentNullException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component of <paramref name="pair"/> is
            a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> component of <paramref name="pair"/>
            is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/>
            differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component.
            </exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.KeyValueList`2"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.KeyValueList`2"/> already contains the <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component of <paramref name="pair"/>, and the
            <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> ensures that all keys are unique.
            </para></exception>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.CheckWritable(System.Int32,System.Collections.Generic.KeyValuePair{`0,`1})">
            <summary>
            Checks that the specified key-and-value pair can be inserted into the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> at the specified index.</summary>
            <param name="index">
            The zero-based index at which to insert <paramref name="pair"/>.</param>
            <param name="pair">
            The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> element to add.</param>
            <exception cref="T:System.ArgumentNullException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component of <paramref name="pair"/> is
            a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> component of <paramref name="pair"/>
            is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/>
            differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component.
            </exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.KeyValueList`2"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.KeyValueList`2"/> already contains the <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component of <paramref name="pair"/> at a
            different index, and the <see cref="T:Tektosyne.Collections.MultiKeyedList`2"/> ensures that all
            keys are unique.</para></exception>
            <remarks>
            <b>CheckWritable</b> does not test for duplicate keys if the specified <paramref name="index"/> is less than zero, or equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.Add(`0,`1)">
            <summary>
            Adds an element with the specified key and value to the end of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</summary>
            <param name="key">
            The key of the element to add.</param>
            <param name="value">
            The value of the element to add.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from <paramref name="key"/>.</exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.KeyValueList`2"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.KeyValueList`2"/> already contains the specified
            key-and-value pair, and the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> ensures that all
            elements are unique.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.Add(`0,`1)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.AsReadOnly">
            <summary>
            Creates a read-only view of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</summary>
            <returns>
            A read-only wrapper around the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</returns>
            <remarks><para>
            Attempting to modify the read-only wrapper returned by <b>AsReadOnly</b> will raise a
            <see cref="T:System.NotSupportedException"/>. Note that the original collection may still change,
            and any such changes will be reflected in the read-only view.
            </para><para>
            <b>AsReadOnly</b> buffers the newly created read-only wrapper when the method is first
            called, and returns the buffered value on subsequent calls.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.Clone">
            <summary>
            Creates a shallow copy of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</summary>
            <returns>
            A shallow copy of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</returns>
            <remarks>
            <b>Clone</b> preserves the value of the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property, but
            not the values of the <see cref="P:Tektosyne.Collections.ListEx`1.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.ListEx`1.IsReadOnly"/> properties.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.ContainsKey(`0)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> contains the specified
            key.</summary>
            <param name="key">
            The key to locate.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> contains an element with the
            specified <paramref name="key"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.ContainsKey(`0)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.ContainsValue(`1)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> contains the specified
            value.</summary>
            <param name="value">
            The value to locate.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> contains an element with the
            specified <paramref name="value"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.ContainsValue(`1)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.Copy">
            <summary>
            Creates a deep copy of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</summary>
            <returns>
            A deep copy of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</returns>
            <exception cref="T:System.InvalidCastException">
            <typeparamref name="TValue"/> does not implement <see cref="T:System.ICloneable"/>.</exception>
            <remarks><para>
            <b>Copy</b> is similar to <see cref="M:Tektosyne.Collections.KeyValueList`2.Clone"/> but creates a deep copy the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> by invoking <see cref="M:System.ICloneable.Clone"/> on all
            <typeparamref name="TValue"/> values. The <typeparamref name="TKey"/> keys are always
            duplicated by a shallow copy.
            </para><para>
            <b>Copy</b> preserves the value of the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property, but
            not the values of the <see cref="P:Tektosyne.Collections.ListEx`1.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.ListEx`1.IsReadOnly"/> properties.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.GetByIndex(System.Int32)">
            <summary>
            Gets the value at the specified index.</summary>
            <param name="index">
            The zero-based index of the value to get.</param>
            <returns>
            The value at the specified <paramref name="index"/> in the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.SortedList.GetByIndex(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.GetByKey(`0)">
            <summary>
            Gets the value associated with the first occurrence of the specified key.</summary>
            <param name="key">
            The key whose value to get.</param>
            <returns>
            The value associated with the first occurrence of <paramref name="key"/> in the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">
            <paramref name="key"/> was not found in the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.
            </exception>
            <remarks>
            <b>GetByKey</b> has the same effect as reading the key indexer, <see cref="P:Tektosyne.Collections.KeyValueList`2.Item(`0)"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.GetKey(System.Int32)">
            <summary>
            Gets the key at the specified index.</summary>
            <param name="index">
            The zero-based index of the key to get.</param>
            <returns>
            The key at the specified <paramref name="index"/> in the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.SortedList.GetKey(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.IndexOfKey(`0)">
            <summary>
            Returns the zero-based index of the first occurrence of the specified key.</summary>
            <param name="key">
            The key to locate.</param>
            <returns>
            The zero-based index of the first occurrence of <paramref name="key"/> in the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>, if found; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.IndexOfKey(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.IndexOfValue(`1)">
            <summary>
            Returns the zero-based index of first occurrence of the specified value.</summary>
            <param name="value">
            The value to locate.</param>
            <returns>
            The zero-based index of the first occurrence of <paramref name="value"/> in the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>, if found; otherwise, -1.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.IndexOfValue(`1)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.SetByIndex(System.Int32,`1)">
            <summary>
            Sets the value at the specified index.</summary>
            <param name="index">
            The zero-based index of the value to set.</param>
            <param name="value">
            The value to store at the specified <paramref name="index"/> in the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> component differs from the key at the specified <paramref name="index"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.KeyValueList`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.SortedList.SetByIndex(System.Int32,System.Object)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.SetByKey(`0,`1)">
            <summary>
            Sets the value associated with the first occurrence of the specified key.</summary>
            <param name="key">
            The key whose value to set.</param>
            <param name="value"><para>
            The value to associate with the first occurrence of <paramref name="key"/>.
            </para><para>
            If <paramref name="key"/> is not found, <b>SetByKey</b> adds a new element with the
            specified <paramref name="key"/> and <paramref name="value"/> to the end of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</para></param>
            <returns>
            The <see cref="T:Tektosyne.Collections.KeyValueList`2"/> index of the element that was changed or
            added.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from <paramref name="key"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.KeyValueList`2"/> is read-only.</exception>
            <remarks>
            <b>SetByKey</b> has the same effect as setting the key indexer, <see cref="P:Tektosyne.Collections.KeyValueList`2.Item(`0)"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyValueList`2.TryGetValue(`0,`1@)">
            <summary>
            Gets the value associated with the first occurrence of the specified key.</summary>
            <param name="key">
            The key whose value to get.</param>
            <param name="value">
            The value associated with the first occurrence of <paramref name="key"/>, if found;
            otherwise, the default value for <typeparamref name="TValue"/>.</param>
            <returns>
            <c>true</c> if <paramref name="key"/> was found; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.TryGetValue(`0,`1@)"/> for details.
            </remarks>
        </member>
        <member name="P:Tektosyne.Collections.KeyValueList`2.Item(`0)">
            <summary>
            Gets or sets the value associated with the first occurrence of the specified key.
            </summary>
            <param name="key">
            The key whose value to get or set.</param>
            <value><para>
            The value associated with the first occurrence of the specified <paramref name="key"/>.
            </para><para>
            If <paramref name="key"/> is not found, attempting to get it throws a <see cref="T:System.Collections.Generic.KeyNotFoundException"/>, and attempting to set it adds a new element with the
            specified key and value to the end of the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.
            </para></value>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            The property is set to an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> differs from the specified <paramref name="key"/>.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">
            The property is read, and <paramref name="key"/> does not exist in the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The property is set, and the <see cref="T:Tektosyne.Collections.KeyValueList`2"/> is read-only.
            </exception>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedList`2.Item(`0)"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.KeyValueList`2.Keys">
            <summary>
            Gets an <see cref="T:System.Collections.Generic.IList`1"/> containing the keys in the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.IList`1"/> containing the keys in the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedList`2.Keys"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.KeyValueList`2.Values">
            <summary>
            Gets an <see cref="T:System.Collections.Generic.IList`1"/> containing the values in the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.IList`1"/> containing the values in the <see cref="T:Tektosyne.Collections.KeyValueList`2"/>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedList`2.Values"/> for details.</remarks>
        </member>
        <member name="T:Tektosyne.Windows.NumericUpDownEx">
            <summary>
            Provides a <see cref="T:System.Windows.Forms.NumericUpDown"/> control that correctly validates user input.
            </summary>
            <remarks><para>
            The standard Windows Forms <see cref="T:System.Windows.Forms.NumericUpDown"/> control provides the <see cref="P:System.Windows.Forms.NumericUpDown.Minimum"/> and <see cref="P:System.Windows.Forms.NumericUpDown.Maximum"/> properties to
            restrict the range of values that a user may enter, but only actually validates the current
            <see cref="P:System.Windows.Forms.NumericUpDown.Value"/> against this range if it was entered using the arrow
            controls. Any value that was manually typed into the text box is never validated.
            </para><para>
            <b>NumericUpDownEx</b> adds the missing validation for manually entered values. The user
            cannot enter a value that is less than <b>Minimum</b> or greater than <b>Maximum</b>.
            Additionally, the current <b>Value</b> is restricted to this range whenever the control
            loses input focus.
            </para><para>
            However, the user is allowed to completely clear the text entry field and start typing a new
            value without being interrupted, as long as the input focus remains on the
            <b>NumericUpDownEx</b> control. If the control loses focus while the field value is invalid,
            it is reset to <b>Minimum</b> or <b>Maximum</b>.
            </para><para>
            <b>NumericUpDownEx</b> also provides new <see cref="P:Tektosyne.Windows.NumericUpDownEx.ErrorProvider"/> and
            <see cref="P:Tektosyne.Windows.NumericUpDownEx.ToolTip"/> properties that allow the display of error indicators
            and informational messages, respectively, which further reduce the potential for erroneous
            data entry.</para><note type="caution">
            As the <see cref="T:System.Windows.Forms.NumericUpDown"/> control does not expose an event to monitor changes to
            the <b>Minimum</b> and <b>Maximum</b> properties, you must manually call <see cref="M:Tektosyne.Windows.NumericUpDownEx.UpdateToolTip"/> whenever you change these properties after a
            <b>ToolTip</b> component has been attached.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.NumericUpDownEx.CreateStrings">
            <summary>
            Creates default backer and helper strings for the <see cref="P:Tektosyne.Windows.NumericUpDownEx.ErrorMessage"/>, <see cref="P:Tektosyne.Windows.NumericUpDownEx.InfoMessage"/>, and <see cref="P:Tektosyne.Windows.NumericUpDownEx.MaxTextLength"/> properties.</summary>
            <remarks>
            All created strings are based on the values of the <see cref="P:System.Windows.Forms.NumericUpDown.Minimum"/>
            and <see cref="P:System.Windows.Forms.NumericUpDown.Maximum"/> properties. <b>CreateStrings</b> therefore only
            creates new strings if these properties were changed since the last invocation.
            </remarks>
        </member>
        <member name="M:Tektosyne.Windows.NumericUpDownEx.SetErrorProviderText(System.String)">
            <summary>
            Updates the associated <see cref="P:Tektosyne.Windows.NumericUpDownEx.ErrorProvider"/> with the specified message.</summary>
            <param name="message">
            The message to show using the <see cref="P:Tektosyne.Windows.NumericUpDownEx.ErrorProvider"/> component.</param>
            <remarks>
            The specified <paramref name="message"/> may be an empty string to disable the
            associated <see cref="P:Tektosyne.Windows.NumericUpDownEx.ErrorProvider"/> component.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.NumericUpDownEx.SetToolTipText(System.String)">
            <summary>
            Updates the associated <see cref="P:Tektosyne.Windows.NumericUpDownEx.ToolTip"/> with the specified message.</summary>
            <param name="message">
            The message to show using the <see cref="P:Tektosyne.Windows.NumericUpDownEx.ToolTip"/> component.</param>
            <remarks>
            The specified <paramref name="message"/> may be an empty string to disable the
            associated <see cref="P:Tektosyne.Windows.NumericUpDownEx.ToolTip"/> component.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.NumericUpDownEx.OnLostFocus(System.EventArgs)">
            <summary>
            Raises and handles the <see cref="E:System.Windows.Forms.Control.LostFocus"/> event.</summary>
            <param name="args">
            An <see cref="T:System.EventArgs"/> object containing event data.</param>
            <remarks><para>
            <b>OnLostFocus</b> first raises the <see cref="E:System.Windows.Forms.Control.LostFocus"/> event by calling the
            base class implementation of <see cref="M:System.Windows.Forms.NumericUpDown.OnLostFocus(System.EventArgs)"/>.
            </para><para>
            <b>OnLostFocus</b> then handles the <b>LostFocus</b> event by attempting to parse <see cref="P:System.Windows.Forms.Control.Text"/> as a <see cref="T:System.Decimal"/> number. If the attempt fails, <see cref="P:System.Windows.Forms.NumericUpDown.Value"/> is set to <see cref="P:System.Windows.Forms.NumericUpDown.Minimum"/>, and <see cref="P:System.Windows.Forms.NumericUpDown.Text"/> is set to the result of <see cref="M:Tektosyne.Windows.NumericUpDownEx.FormatValue(System.Decimal)"/> for that
            value.
            </para><para>
            This manual update is necessary because the <see cref="M:System.Windows.Forms.NumericUpDown.UpdateEditText"/>
            method that is called during normal validation does not change the <see cref="P:System.Windows.Forms.Control.Text"/> property at all if it does not contain a valid <see cref="T:System.Decimal"/> number.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.NumericUpDownEx.OnTextChanged(System.EventArgs)">
            <summary>
            Raises and handles the <see cref="E:System.Windows.Forms.Control.TextChanged"/> event.</summary>
            <param name="args">
            An <see cref="T:System.EventArgs"/> object containing event data.</param>
            <remarks><para>
            <b>OnTextChanged</b> first raises the <see cref="E:System.Windows.Forms.Control.TextChanged"/> event by calling
            the base class implementation of <see cref="M:System.Windows.Forms.Control.OnTextChanged(System.EventArgs)"/>.
            </para><para>
            <b>OnTextChanged</b> then handles the <b>TextChanged</b> event by calling <see cref="M:System.Windows.Forms.NumericUpDown.ValidateEditText"/> if <see cref="P:System.Windows.Forms.UpDownBase.UserEdit"/> is
            <c>true</c> and the <see cref="P:System.Windows.Forms.Control.Text"/> property contains at least <see cref="P:Tektosyne.Windows.NumericUpDownEx.MaxTextLength"/> characters.
            </para><para>
            Moreover, if <see cref="P:Tektosyne.Windows.NumericUpDownEx.ErrorProvider"/> is a valid reference, its error indicator is
            shown or hidden, depending on the value of the <see cref="P:Tektosyne.Windows.NumericUpDownEx.IsTextValid"/> property.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.NumericUpDownEx.OnValidating(System.ComponentModel.CancelEventArgs)">
            <summary>
            Raises and handles the <see cref="E:System.Windows.Forms.Control.Validating"/> event.</summary>
            <param name="args">
            A <see cref="T:System.ComponentModel.CancelEventArgs"/> object containing event data.</param>
            <remarks><para>
            <b>OnValidating</b> first raises the <see cref="E:System.Windows.Forms.Control.Validating"/> event by calling
            the base class implementation of <see cref="M:System.Windows.Forms.Control.OnValidating(System.ComponentModel.CancelEventArgs)"/>.
            </para><para>
            <b>OnValidating</b> then handles the <b>Validating</b> event by calling <see cref="M:System.Windows.Forms.NumericUpDown.ValidateEditText"/>.
            </para><para>
            This method triggers <see cref="M:Tektosyne.Windows.NumericUpDownEx.OnTextChanged(System.EventArgs)"/> if the value of the <see cref="P:System.Windows.Forms.Control.Text"/> property was invalid, thereby also updating the <see cref="P:Tektosyne.Windows.NumericUpDownEx.ErrorProvider"/>, if present.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.NumericUpDownEx.FormatValue(System.Decimal)">
            <summary>
            Formats the specified value according to the current format settings of the <see cref="T:Tektosyne.Windows.NumericUpDownEx"/> control.</summary>
            <param name="value">
            The <see cref="T:System.Decimal"/> value to format.</param>
            <returns>
            A <see cref="T:System.String"/> representation of the specified <paramref name="value"/> that
            matches the current format settings of this <see cref="T:Tektosyne.Windows.NumericUpDownEx"/> control.
            </returns>
            <remarks>
            <b>FormatValue</b> exposes the string formatting used internally by the <see cref="M:System.Windows.Forms.NumericUpDown.UpdateEditText"/> method. The exact format depends on the current
            values of the <see cref="P:System.Windows.Forms.NumericUpDown.DecimalPlaces"/>, <see cref="P:System.Windows.Forms.NumericUpDown.Hexadecimal"/>, and <see cref="P:System.Windows.Forms.NumericUpDown.ThousandsSeparator"/>
            properties.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.NumericUpDownEx.UpdateToolTip">
            <summary>
            Updates the associated <see cref="P:Tektosyne.Windows.NumericUpDownEx.ToolTip"/> with the current <see cref="P:Tektosyne.Windows.NumericUpDownEx.InfoMessage"/>.
            </summary>
            <remarks>
            <b>UpdateComponents</b> refreshes the associated <see cref="P:Tektosyne.Windows.NumericUpDownEx.ToolTip"/> component, if
            any, with the current <see cref="P:Tektosyne.Windows.NumericUpDownEx.InfoMessage"/>. Call this method whenever the <see cref="P:System.Windows.Forms.NumericUpDown.Minimum"/> or <see cref="P:System.Windows.Forms.NumericUpDown.Maximum"/> values change
            after the <see cref="P:Tektosyne.Windows.NumericUpDownEx.ToolTip"/> component has been set.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownEx.ErrorMessage">
            <summary>
            Gets or sets the error message shown by the associated <see cref="P:Tektosyne.Windows.NumericUpDownEx.ErrorProvider"/>.
            </summary>
            <value>
            The message that is shown when the user hovers the mouse pointer over the error icon
            displayed by the <see cref="P:Tektosyne.Windows.NumericUpDownEx.ErrorProvider"/> object associated with the <see cref="T:Tektosyne.Windows.NumericUpDownEx"/> control.</value>
            <remarks><para>
            The default <b>ErrorMessage</b> shows the current <see cref="P:System.Windows.Forms.NumericUpDown.Minimum"/>
            and <see cref="P:System.Windows.Forms.NumericUpDown.Maximum"/> values, and informs the user that invalid values
            will be reset to <b>Minimum</b> or <b>Maximum</b> unless corrected.
            </para><para>
            Setting <b>ErrorMessage</b> to a null reference or an empty string restores the default
            message.</para></remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownEx.ErrorProvider">
            <summary>
            Gets or sets the <see cref="T:System.Windows.Forms.ErrorProvider"/> for the <see cref="T:Tektosyne.Windows.NumericUpDownEx"/> control.</summary>
            <value>
            The <see cref="T:System.Windows.Forms.ErrorProvider"/> component that is used to indicate
            invalid values while the user is editing the text entry field. The default is a null
            reference.</value>
            <remarks><para>
            Setting <b>ErrorProvider</b> to a valid reference causes <see cref="M:Tektosyne.Windows.NumericUpDownEx.OnTextChanged(System.EventArgs)"/> to
            show an error indicator as long as the text entry field contains an invalid value.
            Hovering the mouse pointer over the error icon displays the current <see cref="P:Tektosyne.Windows.NumericUpDownEx.ErrorMessage"/>.
            </para><para>
            Setting <b>ErrorProvider</b> to a null reference disables the error indicator.
            </para></remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownEx.InfoMessage">
            <summary>
            Gets or sets the informational message shown by the associated <see cref="P:Tektosyne.Windows.NumericUpDownEx.ToolTip"/>.
            </summary>
            <value>
            The message that is shown when the user hovers the mouse pointer over the <see cref="T:Tektosyne.Windows.NumericUpDownEx"/> control.</value>
            <remarks><para>
            The default <b>InfoMessage</b> shows the current <see cref="P:System.Windows.Forms.NumericUpDown.Minimum"/> and
            <see cref="P:System.Windows.Forms.NumericUpDown.Maximum"/> values.
            </para><para>
            Setting <b>InfoMessage</b> to a null reference or an empty string restores the default
            message.</para></remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownEx.IsTextValid">
            <summary>
            Determines whether <see cref="P:System.Windows.Forms.Control.Text"/> contains a valid numeric value.</summary>
            <value>
            <c>true</c> if <see cref="P:System.Windows.Forms.Control.Text"/> contains a valid numeric value between <see cref="P:System.Windows.Forms.NumericUpDown.Minimum"/> and <see cref="P:System.Windows.Forms.NumericUpDown.Maximum"/>; otherwise,
            <c>false</c>.</value>
            <remarks>
            <b>IsTextValid</b> allows clients to validate the <see cref="P:System.Windows.Forms.Control.Text"/> property
            without changing its contents. The <see cref="P:System.Windows.Forms.NumericUpDown.Value"/> property cannot be
            used for this purpose because accessing <b>Value</b> overwrites <b>Text</b> if it does
            not contain a valid numeric value.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownEx.MaxTextLength">
            <summary>
            Gets the maximum length of the string representation of any valid <see cref="P:System.Windows.Forms.NumericUpDown.Value"/>.</summary>
            <value>
            The <see cref="P:System.String.Length"/> of the result of <see cref="M:Tektosyne.Windows.NumericUpDownEx.FormatValue(System.Decimal)"/> for <see cref="P:System.Windows.Forms.NumericUpDown.Minimum"/> or <see cref="P:System.Windows.Forms.NumericUpDown.Maximum"/>, whichever is
            greater.</value>
            <remarks>
            <see cref="M:Tektosyne.Windows.NumericUpDownEx.OnTextChanged(System.EventArgs)"/> calls <see cref="M:System.Windows.Forms.NumericUpDown.ValidateEditText"/> as soon
            as the user has entered <b>MaxTextLength</b> or more characters.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownEx.ToolTip">
            <summary>
            Gets or sets the <see cref="T:System.Windows.Forms.ToolTip"/> for the <see cref="T:Tektosyne.Windows.NumericUpDownEx"/> control.</summary>
            <value>
            The <see cref="T:System.Windows.Forms.ToolTip"/> component that is used to display an
            informational message while the mouse pointer hovers over the <see cref="T:Tektosyne.Windows.NumericUpDownEx"/> control. The default is a null reference.</value>
            <remarks><para>
            Setting <b>ToolTip</b> to a valid reference displays the current <see cref="P:Tektosyne.Windows.NumericUpDownEx.InfoMessage"/> while the user hovers the mouse pointer over the <see cref="T:Tektosyne.Windows.NumericUpDownEx"/> control.
            </para><para>
            Setting <b>ToolTip</b> to a null reference disables the informational message.
            </para></remarks>
        </member>
        <member name="T:Tektosyne.Windows.ContainerVisualHost">
            <summary>
            Provides a <see cref="T:System.Windows.FrameworkElement"/> that hosts a single <see cref="T:System.Windows.Media.ContainerVisual"/>
            child element.</summary>
            <remarks>
            <b>ContainerVisualHost</b> is a simple adapter class for hosting <see cref="T:System.Windows.Media.ContainerVisual"/> objects within WPF data structures that accept only <see cref="T:System.Windows.UIElement"/> or <see cref="T:System.Windows.FrameworkElement"/> objects.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.ContainerVisualHost.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.ContainerVisualHost"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.ContainerVisualHost"/> class with default
            parameters.</summary>
            <remarks>
            The <see cref="P:Tektosyne.Windows.ContainerVisualHost.VisualChild"/> property is set to an empty <see cref="T:System.Windows.Media.DrawingVisual"/>
            object.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.ContainerVisualHost.#ctor(System.Windows.Media.ContainerVisual)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.ContainerVisualHost"/> class with the
            specified <see cref="T:System.Windows.Media.ContainerVisual"/> object.</summary>
            <param name="visualChild">
            The initial value for the <see cref="P:Tektosyne.Windows.ContainerVisualHost.VisualChild"/> property.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="visualChild"/> is a null reference.</exception>
        </member>
        <member name="M:Tektosyne.Windows.ContainerVisualHost.GetVisualChild(System.Int32)">
            <summary>
            Returns the visual child element with the specified index.</summary>
            <param name="index">
            The zero-based index of the visual child element to return.</param>
            <returns>
            The visual child element with the specified <paramref name="index"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="index"/> does not equal zero.</exception>
            <remarks>
            <b>GetVisualChild</b> returns the value of the <see cref="P:Tektosyne.Windows.ContainerVisualHost.VisualChild"/> property if the
            specified <paramref name="index"/> equals zero.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.ContainerVisualHost.MeasureOverride(System.Windows.Size)">
            <summary>
            Measures the layout size required for the <see cref="T:Tektosyne.Windows.ContainerVisualHost"/>.</summary>
            <param name="availableSize">
            The layout size available for the <see cref="T:Tektosyne.Windows.ContainerVisualHost"/>.</param>
            <returns>
            The layout size required for the <see cref="T:Tektosyne.Windows.ContainerVisualHost"/>.</returns>
            <remarks>
            <b>MeasureOverride</b> always returns the <see cref="P:System.Windows.Media.ContainerVisual.ContentBounds"/>
            size of the hosted <see cref="P:Tektosyne.Windows.ContainerVisualHost.VisualChild"/>. The specified <paramref name="availableSize"/> is ignored.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.ContainerVisualHost.VisualChild">
            <summary>
            Gets or sets the single visual child element of the <see cref="T:Tektosyne.Windows.ContainerVisualHost"/>.
            </summary>
            <value>
            The single visual child element of the <see cref="T:Tektosyne.Windows.ContainerVisualHost"/>. The default is
            an empty <see cref="T:System.Windows.Media.DrawingVisual"/> object.</value>
            <exception cref="T:System.ArgumentNullException">
            The property is set to a null reference.</exception>
        </member>
        <member name="P:Tektosyne.Windows.ContainerVisualHost.VisualChildrenCount">
            <summary>
            Gets the number of visual children of the <see cref="T:Tektosyne.Windows.ContainerVisualHost"/>.</summary>
            <value>
            The number of visual children of the <see cref="T:Tektosyne.Windows.ContainerVisualHost"/>.</value>
            <remarks>
            <b>VisualChildrenCount</b> returns the constant value one.</remarks>
        </member>
        <member name="T:Tektosyne.Win32Api.MemoryStatus">
            <summary>
            Contains information about the current state of both physical and virtual memory.</summary>
            <remarks>
            This type mirrors the <b>MEMORYSTATUS</b> structure defined in the Platform SDK. Please
            refer to the Microsoft Platform SDK documentation for details.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatus.dwLength">
            <summary>
            The size of the <see cref="T:Tektosyne.Win32Api.MemoryStatus"/> data structure, in bytes.</summary>
            <remarks>
            You do not need to set this value before calling <see cref="M:Tektosyne.Win32Api.Kernel.GlobalMemoryStatus(Tektosyne.Win32Api.MemoryStatus)"/>; the function sets it.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatus.dwMemoryLoad">
            <summary>
            The approximate percentage of total physical memory that is in use.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatus.dwTotalPhys">
            <summary>
            The amount of actual physical memory, in bytes.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatus.dwAvailPhys">
            <summary>
            The amount of physical memory currently available, in bytes.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatus.dwTotalPageFile">
            <summary>
            The current size of the committed memory limit, in bytes.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatus.dwAvailPageFile">
            <summary>
            The maximum amount of memory the current process can commit, in bytes.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatus.dwTotalVirtual">
            <summary>
            The size of the user-mode portion of the virtual address space of the calling process,
            in bytes.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MemoryStatus.dwAvailVirtual">
            <summary>
            The amount of unreserved and uncommitted memory currently in the user-mode portion of
            the virtual address space of the calling process, in bytes.</summary>
        </member>
        <member name="T:Tektosyne.Win32Api.MapiFileFlags">
            <summary>
            Defines attachment flags for MAPI messages.</summary>
            <remarks>
            <b>MapiFileFlags</b> defines all possible values for the <see cref="F:Tektosyne.Win32Api.MapiFileDesc.flFlags"/>
            field of the <see cref="T:Tektosyne.Win32Api.MapiFileDesc"/> structure. Bitwise combinations are possible.
            </remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFileFlags.MAPI_OLE">
            <summary>
            Indicates an OLE object attachment.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFileFlags.MAPI_OLE_STATIC">
            <summary>
            Indicates a static OLE object attachment.</summary>
        </member>
        <member name="T:Tektosyne.IO.IOUtility">
            <summary>
            Provides auxiliary methods for <b>System.IO</b>.</summary>
        </member>
        <member name="M:Tektosyne.IO.IOUtility.RecursiveCopy(System.String,System.IO.StreamWriter,System.String,System.Text.RegularExpressions.Regex,System.String,System.String,System.Collections.Generic.List{System.String})">
            <summary>
            Copies the specified text file while recursively replacing file inclusion tags with the
            referenced files.</summary>
            <param name="source">
            The text file to copy to <paramref name="writer"/>, while expanding any embedded file
            inclusion tags.</param>
            <param name="writer">
            The <see cref="T:System.IO.StreamWriter"/> to copy <paramref name="source"/> to, along with any
            included files.</param>
            <param name="fileGroup">
            The name of the match <see cref="T:System.Text.RegularExpressions.Group"/> within the <paramref name="includeSearch"/>
            pattern that identifies file names.</param>
            <param name="includeSearch">
            The <see cref="T:System.Text.RegularExpressions.Regex"/> search pattern describing the file inclusion tags embedded in
            <paramref name="source"/>.</param>
            <param name="includePrefix">
            The <see cref="M:System.Text.RegularExpressions.Regex.Replace(System.String,System.String,System.String)"/> pattern to write to <paramref name="writer"/> before
            file inclusion begins.</param>
            <param name="includeSuffix">
            The <see cref="M:System.Text.RegularExpressions.Regex.Replace(System.String,System.String,System.String)"/> pattern to write to <paramref name="writer"/> after file
            inclusion ends.</param>
            <param name="openFiles">
            The names of all files which are still open and should be skipped when encountered again
            in a <paramref name="fileGroup"/> match.</param>
            <remarks><para>
            <b>RecursiveCopy</b> uses the <paramref name="openFiles"/> list to keep track of all
            files opened by previous recursion levels. Any inclusion tag specifying one of these
            files is silently ignored to prevent endless loops. The initial caller should supply an
            empty <see cref="T:System.Collections.Generic.List`1"/> for <paramref name="openFiles"/>, and will receive an
            empty <see cref="T:System.Collections.Generic.List`1"/> upon return.
            </para><para>
            Please refer to <see cref="M:Tektosyne.IO.IOUtility.CopyAndReplace(System.String,System.String,System.String,System.Text.RegularExpressions.Regex,System.String,System.String)"/> for details on other parameters.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.IO.IOUtility.CopyAndReplace(System.String,System.String,System.String,System.Text.RegularExpressions.Regex,System.String,System.String)">
            <summary>
            Copies the specified text file while recursively replacíng file inclusion tags with the
            referenced files.</summary>
            <param name="source">
            The text file to copy to <paramref name="target"/> while expanding any embedded file
            inclusion tags.</param>
            <param name="target">
            The text file to copy <paramref name="source"/> to, along with any included files.
            </param>
            <param name="fileGroup">
            The name of the match <see cref="T:System.Text.RegularExpressions.Group"/> within the <paramref name="includeSearch"/>
            pattern that identifies file names.</param>
            <param name="includeSearch">
            The <see cref="T:System.Text.RegularExpressions.Regex"/> search pattern describing the file inclusion tags embedded in
            <paramref name="source"/>.</param>
            <param name="includePrefix">
            The <see cref="M:System.Text.RegularExpressions.Regex.Replace(System.String,System.String,System.String)"/> pattern to write to <paramref name="target"/> before
            file inclusion begins.</param>
            <param name="includeSuffix">
            The <see cref="M:System.Text.RegularExpressions.Regex.Replace(System.String,System.String,System.String)"/> pattern to write to <paramref name="target"/> after file
            inclusion ends.</param>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="source"/>, <paramref name="target"/>, or <paramref name="fileGroup"/> is
            a null reference or an empty string.</exception>
            <remarks><para>
            <b>CopyAndReplace</b> reads the specified <paramref name="source"/> text file, line by
            line, and matches each line against the specified <paramref name="includeSearch"/>
            pattern. If no match is found, the line is simply copied to the specified <paramref name="target"/> file; otherwise, the specified <paramref name="fileGroup"/> within the
            <see cref="T:System.Text.RegularExpressions.Regex"/> match is assumed to indicate another text file whose contents will
            be read and copied to <paramref name="target"/> in the same fashion. The <paramref name="source"/> line that matched <paramref name="includeSearch"/> is discarded. Any
            existing file of the same name as <paramref name="target"/> is overwritten.
            </para><para>
            The <paramref name="includePrefix"/> and <paramref name="includeSuffix"/> parameters
            allow the creation of "marker lines" bracketing any included file content. In formalized
            input text such as XML or source code, these arguments might evaluate to some kind of
            comments in order to aid later reconstruction of the file inclusion process.
            </para><para>
            Either or both of the <paramref name="includePrefix"/> and <paramref name="includeSuffix"/> arguments may be null references or empty strings to suppress the
            creation of marker lines. Valid <paramref name="includePrefix"/> and <paramref name="includeSuffix"/> parameters are passed to the <see cref="M:System.Text.RegularExpressions.Regex.Replace(System.String,System.String,System.String)"/> method
            of the specified <paramref name="includeSearch"/> pattern. They are applied to any line
            producing a non-empty <see cref="M:System.Text.RegularExpressions.Regex.Match(System.String,System.String)"/> result for <paramref name="includeSearch"/>, i.e. any line containing a file inclusion tag. This allows
            reusing the specified <paramref name="fileGroup"/> and any other named groups in
            <paramref name="includeSearch"/> to create marker lines containing the name of the
            included file and other variable data.</para></remarks>
            <example><para>
            Consider an XML file containing file inclusion tags of the following form:
            </para><code>
            &lt;include href="section.xml"/&gt;
            </code><para>
            We want to replace all such lines with the following sequence of lines:
            </para><code>
            &lt;!-- include_open "section.xml --&gt;
            </code><code>
            <em>...contents of "section.xml" follow here...</em>
            </code><code>
            &lt;!-- include_close "section.xml --&gt;
            </code><para>
            Assuming "input.xml" as the name of the input file and "output.xml" as the name of the
            output file, the following invocation of <b>CopyAndReplace</b> would achieve the desired
            result:
            </para><code>
            CopyAndReplace("input.xml", "output.xml", "file",
                new Regex(@"&lt;include href=""(?&lt;file&gt;[^""]*)""/&gt;"),
                @"&lt;!-- include_open ""${file}"" --&gt;",
                @"&lt;!-- include_close ""${file}"" --&gt;");
            </code><para>
            Note how the group identifier "file" is used both in the search expression and in the
            parameters for the marker lines.</para></example>
        </member>
        <member name="M:Tektosyne.IO.IOUtility.SearchDirectory(System.String,System.String)">
            <summary>
            Searches a single directory for a file matching the specified pattern.</summary>
            <param name="directory">
            The directory to search for <paramref name="pattern"/>.</param>
            <param name="pattern">
            The file name pattern to search for. The pattern may contain wildcards but no directory
            prefixes.</param>
            <returns><para>
            The first file name in <paramref name="directory"/> that matches the specified <paramref name="pattern"/>.
            </para><para>-or-</para><para>
            A null reference if no match was found or <paramref name="directory"/> does not exist.
            </para></returns>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="directory"/> or <paramref name="pattern"/> is a null reference or an
            empty string.</exception>
            <remarks><para>
            <b>SearchDirectory</b> prefixes the returned file name, if any, with the specified
            <paramref name="directory"/>.
            </para><para>
            The search <paramref name="pattern"/> may contain any wildcards accepted by the file
            system, as described in <see cref="M:System.IO.Directory.GetFiles(System.String,System.String)"/>.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.IO.IOUtility.SearchDirectoryTree(System.String,System.String)">
            <summary>
            Searches a directory tree for a file matching the specified pattern.</summary>
            <param name="rootDirectory">
            The root directory of the directory tree to search for <paramref name="pattern"/>.
            </param>
            <param name="pattern">
            The file name pattern to search for. The pattern may contain wildcards but no directory
            prefixes.</param>
            <returns><para>
            The first file name in the directory tree starting with <paramref name="rootDirectory"/>
            that matches the specified <paramref name="pattern"/>.
            </para><para>-or-</para><para>
            A null reference if no match was found or <paramref name="rootDirectory"/> does not
            exist.</para></returns>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="rootDirectory"/> or <paramref name="pattern"/> is a null reference or an
            empty string.</exception>
            <remarks><para>
            <b>SearchDirectoryTree</b> performs a depth-first search starting with the specified
            <paramref name="rootDirectory"/>, but always checks all files in the present directory
            before descending another level.
            </para><para>
            <b>SearchDirectoryTree</b> prefixes the returned file name, if any, with the specified
            <paramref name="rootDirectory"/> and any intermediate subdirectories.
            </para><para>
            The search <paramref name="pattern"/> may contain any wildcards accepted by the file
            system, as described in <see cref="M:System.IO.Directory.GetFiles(System.String,System.String)"/>.
            </para></remarks>
        </member>
        <member name="T:Tektosyne.BooleanFlag">
            <summary>
            Provides a <see cref="T:System.Boolean"/> flag with value change notification.</summary>
            <remarks><para>
            <b>BooleanFlag</b> manages a <see cref="T:System.Boolean"/> value suitable for tracking binary object
            states. The value is read-only in this abstract base class. Use the derived classes <see cref="T:Tektosyne.BooleanSetFlag"/> and <see cref="T:Tektosyne.BooleanSetClearFlag"/> to instantiate mutable objects.
            </para><para>
            <b>BooleanFlag</b> offers the following features:
            </para><list type="bullet"><item>
            Raises a public event whenever the flag is set or cleared.
            </item><item>
            Raises a public event whenever the flag assumes a different value.
            </item><item>
            Implicit and explicit conversion to <b>Boolean</b>.
            </item><item>
            Value equality and comparison between <b>BooleanFlag</b> objects based on the flag value.
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.BooleanFlag.OnValueChanged(System.EventArgs)">
            <summary>
            Raises the <see cref="E:Tektosyne.BooleanFlag.ValueChanged"/> event.</summary>
            <param name="args">
            An <see cref="T:System.EventArgs"/> object containing event data.</param>
            <remarks><para>
            <b>OnValueChanged</b> is invoked whenever the <see cref="P:Tektosyne.BooleanFlag.Value"/> property is changed
            after the object has been constructed, either directly or indirectly through the <see cref="M:Tektosyne.BooleanSetFlag.Set"/> and <see cref="M:Tektosyne.BooleanSetClearFlag.Clear"/> methods.
            </para><para>
            This method also allows derived classes to handle the <see cref="E:Tektosyne.BooleanFlag.ValueChanged"/> event
            without attaching a delegate. This is the preferred technique for handling the event in
            a derived class.
            </para><para>
            <b>Note to Inheritors:</b> When overriding <b>OnValueChanged</b> in a derived class, be
            sure to call the base class's <b>OnValueChanged</b> method so that registered delegates
            receive the event.</para></remarks>
        </member>
        <member name="M:Tektosyne.BooleanFlag.OnValueSet(System.EventArgs)">
            <summary>
            Raises the <see cref="E:Tektosyne.BooleanFlag.ValueSet"/> event.</summary>
            <param name="args">
            An <see cref="T:System.EventArgs"/> object containing event data.</param>
            <remarks><para>
            <b>OnValueSet</b> is invoked whenever the <see cref="P:Tektosyne.BooleanFlag.Value"/> property is set after the
            object has been constructed, either directly or indirectly through the <see cref="M:Tektosyne.BooleanSetFlag.Set"/> and <see cref="M:Tektosyne.BooleanSetClearFlag.Clear"/> methods.
            </para><para>
            This method also allows derived classes to handle the <see cref="E:Tektosyne.BooleanFlag.ValueSet"/> event
            without attaching a delegate. This is the preferred technique for handling the event in
            a derived class.
            </para><para>
            <b>Note to Inheritors:</b> When overriding <b>OnValueSet</b> in a derived class, be sure
            to call the base class's <b>OnValueSet</b> method so that registered delegates receive
            the event.</para></remarks>
        </member>
        <member name="M:Tektosyne.BooleanFlag.GetHashCode">
            <summary>
            Returns the hash code for this instance of <see cref="T:Tektosyne.BooleanFlag"/>.</summary>
            <returns>
            An <see cref="T:System.Int32"/> hash code for the current <see cref="T:Tektosyne.BooleanFlag"/>.</returns>
            <remarks>
            <b>GetHashCode</b> returns the <see cref="T:System.Int32"/> equivalent for the current <see cref="P:Tektosyne.BooleanFlag.Value"/> of this <see cref="T:Tektosyne.BooleanFlag"/> instance. This is a very coarse hash
            function and should not be used for actual hasing.</remarks>
        </member>
        <member name="M:Tektosyne.BooleanFlag.ToBoolean">
            <summary>
            Returns a <see cref="T:System.Boolean"/> value indicating whether the <see cref="T:Tektosyne.BooleanFlag"/>
            is set.</summary>
            <returns>
            The value of the <see cref="P:Tektosyne.BooleanFlag.Value"/> property of this <see cref="T:Tektosyne.BooleanFlag"/> object.
            </returns>
        </member>
        <member name="M:Tektosyne.BooleanFlag.op_Equality(Tektosyne.BooleanFlag,Tektosyne.BooleanFlag)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.BooleanFlag"/> objects have the same value.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.BooleanFlag"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.BooleanFlag"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.BooleanFlag.Equals(Tektosyne.BooleanFlag,Tektosyne.BooleanFlag)"/> method to test
            the two <see cref="T:Tektosyne.BooleanFlag"/> instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.BooleanFlag.op_Inequality(Tektosyne.BooleanFlag,Tektosyne.BooleanFlag)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.BooleanFlag"/> objects have different
            values.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.BooleanFlag"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.BooleanFlag"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is different from the value of
            <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.BooleanFlag.Equals(Tektosyne.BooleanFlag,Tektosyne.BooleanFlag)"/> method to test
            the two <see cref="T:Tektosyne.BooleanFlag"/> instances for value inequality.</remarks>
        </member>
        <member name="M:Tektosyne.BooleanFlag.op_GreaterThan(Tektosyne.BooleanFlag,Tektosyne.BooleanFlag)">
            <summary>
            Determines whether a specified <see cref="T:Tektosyne.BooleanFlag"/> is greater than another
            specified <see cref="T:Tektosyne.BooleanFlag"/>.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.BooleanFlag"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.BooleanFlag"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is greater than the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.BooleanFlag.CompareTo(Tektosyne.BooleanFlag)"/> method to determine the
            relative values of the two <see cref="T:Tektosyne.BooleanFlag"/> instances.</remarks>
        </member>
        <member name="M:Tektosyne.BooleanFlag.op_LessThan(Tektosyne.BooleanFlag,Tektosyne.BooleanFlag)">
            <summary>
            Determines whether a specified <see cref="T:Tektosyne.BooleanFlag"/> is less than another specified
            <see cref="T:Tektosyne.BooleanFlag"/>.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.BooleanFlag"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.BooleanFlag"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is less than the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.BooleanFlag.CompareTo(Tektosyne.BooleanFlag)"/> method to determine the
            relative values of the two <see cref="T:Tektosyne.BooleanFlag"/> instances.</remarks>
        </member>
        <member name="M:Tektosyne.BooleanFlag.op_GreaterThanOrEqual(Tektosyne.BooleanFlag,Tektosyne.BooleanFlag)">
            <summary>
            Determines whether a specified <see cref="T:Tektosyne.BooleanFlag"/> is greater than or equal to
            another specified <see cref="T:Tektosyne.BooleanFlag"/>.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.BooleanFlag"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.BooleanFlag"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is greater than or equal to the value
            of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.BooleanFlag.CompareTo(Tektosyne.BooleanFlag)"/> method to determine the
            relative values of the two <see cref="T:Tektosyne.BooleanFlag"/> instances.</remarks>
        </member>
        <member name="M:Tektosyne.BooleanFlag.op_LessThanOrEqual(Tektosyne.BooleanFlag,Tektosyne.BooleanFlag)">
            <summary>
            Determines whether a specified <see cref="T:Tektosyne.BooleanFlag"/> is less than or equal to
            another specified <see cref="T:Tektosyne.BooleanFlag"/>.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.BooleanFlag"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.BooleanFlag"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is less than or equal to the value of
            <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.BooleanFlag.CompareTo(Tektosyne.BooleanFlag)"/> method to determine the
            relative values of the two <see cref="T:Tektosyne.BooleanFlag"/> instances.</remarks>
        </member>
        <member name="M:Tektosyne.BooleanFlag.op_Implicit(Tektosyne.BooleanFlag)~System.Boolean">
             <summary>
             Converts a <see cref="T:Tektosyne.BooleanFlag"/> to a <see cref="T:System.Boolean"/> indicating whether the
             flag is set.</summary>
             <param name="flag">
             The <see cref="T:Tektosyne.BooleanFlag"/> object whose <see cref="P:Tektosyne.BooleanFlag.Value"/> property should be
             tested.</param>
             <returns>
             The value of the <see cref="P:Tektosyne.BooleanFlag.Value"/> property of the specified <paramref name="flag"/>.
             </returns>
             <example><para>
             The implicit <see cref="T:System.Boolean"/> conversion allows for very concise tests of a <see cref="T:Tektosyne.BooleanFlag"/> object:
             </para><code>
             class ChangeableClass {
                 BooleanFlag changed = new BooleanSetClearFlag();
            
                 void Foo() {
                     // check if data was changed
                     if (changed) Console.WriteLine("changed"); ...
                 }
             }</code></example>
        </member>
        <member name="M:Tektosyne.BooleanFlag.System#IComparable#CompareTo(System.Object)">
            <overloads>
            Compares two <see cref="T:Tektosyne.BooleanFlag"/> objects and returns an indication of their
            relative values.</overloads>
            <summary>
            Compares this instance of <see cref="T:Tektosyne.BooleanFlag"/> and a specified object, which must
            be a <see cref="T:Tektosyne.BooleanFlag"/>, and returns an indication of their relative values.
            </summary>
            <param name="obj">
            An <see cref="T:System.Object"/> to compare to this instance of <see cref="T:Tektosyne.BooleanFlag"/>.
            </param>
            <returns><para>
            An <see cref="T:System.Int32"/> value indicating the relative order of this instance and
            <paramref name="obj"/>, as follows:
            </para><list type="table"><listheader>
            <term>Return Value</term><description>Condition</description>
            </listheader><item>
            <term>Less than zero</term>
            <description>The <see cref="P:Tektosyne.BooleanFlag.Value"/> property of this instance is <c>false</c>, and that
            of <paramref name="obj"/> is <c>true</c>.</description>
            </item><item>
            <term>Zero</term>
            <description>The <see cref="P:Tektosyne.BooleanFlag.Value"/> property of this instance equals that of <paramref name="obj"/> (either both are <c>true</c> or both are <c>false</c>).</description>
            </item><item>
            <term>Greater than zero</term><description><para>
            The <see cref="P:Tektosyne.BooleanFlag.Value"/> property of this instance is <c>true</c>, and that of <paramref name="obj"/> is <c>false</c>.
            </para><para>-or-</para><para>
            <paramref name="obj"/> is a null reference.</para></description>
            </item></list></returns>
            <exception cref="T:System.ArgumentException">
            <paramref name="obj"/> is neither a <see cref="T:Tektosyne.BooleanFlag"/> nor a null reference.
            </exception>
            <remarks>
            The specified <paramref name="obj"/> must be either a null reference or an instance of
            <b>BooleanFlag</b> or of a type derived from <b>BooleanFlag</b>. In other words, only
            type compatibility is required, not type identity.</remarks>
        </member>
        <member name="M:Tektosyne.BooleanFlag.CompareTo(Tektosyne.BooleanFlag)">
            <summary>
            Compares this instance and a specified <see cref="T:Tektosyne.BooleanFlag"/> and returns an
            indication of their relative values.</summary>
            <param name="flag">
            A <see cref="T:Tektosyne.BooleanFlag"/> to compare to this instance.</param>
            <returns><para>
            An <see cref="T:System.Int32"/> value indicating the relative order of this instance and
            <paramref name="flag"/>, as follows:
            </para><list type="table"><listheader>
            <term>Return Value</term><description>Condition</description>
            </listheader><item>
            <term>Less than zero</term>
            <description>The <see cref="P:Tektosyne.BooleanFlag.Value"/> property of this instance is <c>false</c>, and that
            of <paramref name="flag"/> is <c>true</c>.</description>
            </item><item>
            <term>Zero</term>
            <description>The <see cref="P:Tektosyne.BooleanFlag.Value"/> property of this instance equals that of <paramref name="flag"/> (either both are <c>true</c> or both are <c>false</c>).</description>
            </item><item>
            <term>Greater than zero</term><description><para>
            The <see cref="P:Tektosyne.BooleanFlag.Value"/> property of this instance is <c>true</c>, and that of <paramref name="flag"/> is <c>false</c>.
            </para><para>-or-</para><para>
            <paramref name="flag"/> is a null reference.</para></description>
            </item></list></returns>
        </member>
        <member name="M:Tektosyne.BooleanFlag.Equals(System.Object)">
            <overloads>
            Determines whether two <see cref="T:Tektosyne.BooleanFlag"/> objects have the same value.
            </overloads>
            <summary>
            Determines whether this instance of <see cref="T:Tektosyne.BooleanFlag"/> and a specified object,
            which must be a <see cref="T:Tektosyne.BooleanFlag"/>, have the same value.</summary>
            <param name="obj">
            An <see cref="T:System.Object"/> to compare to this instance of <see cref="T:Tektosyne.BooleanFlag"/>.
            </param>
            <returns>
            <c>true</c> if <paramref name="obj"/> is another <see cref="T:Tektosyne.BooleanFlag"/> instance
            and its value is the same as this instance; otherwise, <c>false</c>.</returns>
            <remarks>
            If the specified <paramref name="obj"/> is another <see cref="T:Tektosyne.BooleanFlag"/> instance,
            or an instance of a derived class, <b>Equals</b> compares the <see cref="P:Tektosyne.BooleanFlag.Value"/>
            properties of the two instances to test for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.BooleanFlag.Equals(Tektosyne.BooleanFlag)">
            <summary>
            Determines whether this instance and a specified <see cref="T:Tektosyne.BooleanFlag"/> have the same
            value.</summary>
            <param name="flag">
            A <see cref="T:Tektosyne.BooleanFlag"/> to compare to this instance.</param>
            <returns>
            <c>true</c> if the value of <paramref name="flag"/> is the same as this instance;
            otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> compares the <see cref="P:Tektosyne.BooleanFlag.Value"/> properties of the two <see cref="T:Tektosyne.BooleanFlag"/> instances to test for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.BooleanFlag.Equals(Tektosyne.BooleanFlag,Tektosyne.BooleanFlag)">
            <summary>
            Determines whether two specified <see cref="T:Tektosyne.BooleanFlag"/> objects have the same value.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.BooleanFlag"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.BooleanFlag"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> compares the <see cref="P:Tektosyne.BooleanFlag.Value"/> properties of the two <see cref="T:Tektosyne.BooleanFlag"/> instances to test for value equality.</remarks>
        </member>
        <member name="P:Tektosyne.BooleanFlag.InnerValue">
            <summary>
            Gets or sets the value of the <see cref="T:Tektosyne.BooleanFlag"/>.</summary>
            <value>
            The <see cref="T:System.Boolean"/> flag managed by this <see cref="T:Tektosyne.BooleanFlag"/> object.</value>
        </member>
        <member name="P:Tektosyne.BooleanFlag.Value">
            <summary>
            Gets the value of the <see cref="T:Tektosyne.BooleanFlag"/>.</summary>
            <value>
            The <see cref="T:System.Boolean"/> flag managed by this <see cref="T:Tektosyne.BooleanFlag"/> object.</value>
            <remarks>
            The <see cref="T:Tektosyne.BooleanFlag"/> class does not allow clients to change the flag value. Use
            the derived types <see cref="T:Tektosyne.BooleanSetFlag"/> and <see cref="T:Tektosyne.BooleanSetClearFlag"/> to
            instantiate mutable objects.</remarks>
        </member>
        <member name="E:Tektosyne.BooleanFlag.ValueChanged">
            <summary>
            Occurs when the <see cref="P:Tektosyne.BooleanFlag.Value"/> property is changed.</summary>
            <remarks><para>
            <b>ValueChanged</b> is raised when the <see cref="P:Tektosyne.BooleanFlag.Value"/> property of this <see cref="T:Tektosyne.BooleanFlag"/> object is changed after the object has been constructed.
            </para><para>
            This event is not raised if the <b>Value</b> property is set to a value that is
            identical to its old value.</para></remarks>
        </member>
        <member name="E:Tektosyne.BooleanFlag.ValueSet">
            <summary>
            Occurs when the <see cref="P:Tektosyne.BooleanFlag.Value"/> property is set.</summary>
            <remarks><para>
            <b>ValueSet</b> is raised when the <see cref="P:Tektosyne.BooleanFlag.Value"/> property of this <see cref="T:Tektosyne.BooleanFlag"/> object is set after the object has been constructed.
            </para><para>
            This event is raised even if the <b>Value</b> property is set to a value that is
            identical to its old value.</para></remarks>
        </member>
        <member name="T:Tektosyne.BooleanSetFlag">
            <summary>
            Provides a <see cref="T:Tektosyne.BooleanFlag"/> that can be set.</summary>
            <remarks>
            <b>BooleanSetFlag</b> extends <see cref="T:Tektosyne.BooleanFlag"/> with a <see cref="M:Tektosyne.BooleanSetFlag.Set"/> method that allows clients to set the flag. Once set, the flag
            cannot be cleared.</remarks>
        </member>
        <member name="M:Tektosyne.BooleanSetFlag.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.BooleanSetFlag"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.BooleanSetFlag"/> class with default
            properties.</summary>
        </member>
        <member name="M:Tektosyne.BooleanSetFlag.#ctor(System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.BooleanSetFlag"/> class with the specified
            initial value.</summary>
            <param name="value">
            The initial value for the <see cref="P:Tektosyne.BooleanFlag.Value"/> property.</param>
        </member>
        <member name="M:Tektosyne.BooleanSetFlag.Set">
            <summary>
            Sets the <see cref="P:Tektosyne.BooleanFlag.Value"/> property to <c>true</c>.</summary>
            <remarks>
            <b>Set</b> raises the <see cref="E:Tektosyne.BooleanFlag.ValueSet"/> event. If the old property
            value was <c>false</c>, <b>Set</b> also raises the <see cref="E:Tektosyne.BooleanFlag.ValueChanged"/> event.</remarks>
        </member>
        <member name="T:Tektosyne.BooleanSetClearFlag">
            <summary>
            Provides a <see cref="T:Tektosyne.BooleanFlag"/> that can be set and cleared.</summary>
            <remarks>
            <b>BooleanSetClearFlag</b> extends <see cref="T:Tektosyne.BooleanSetFlag"/> with a <see cref="M:Tektosyne.BooleanSetClearFlag.Clear"/> method that allows clients to clear the flag, and with an
            additional setter for the <see cref="P:Tektosyne.BooleanFlag.Value"/> property.</remarks>
        </member>
        <member name="M:Tektosyne.BooleanSetClearFlag.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.BooleanSetClearFlag"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.BooleanSetClearFlag"/> class with default
            properties.</summary>
        </member>
        <member name="M:Tektosyne.BooleanSetClearFlag.#ctor(System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.BooleanSetClearFlag"/> class with the
            specified initial value.</summary>
            <param name="value">
            The initial value for the <see cref="P:Tektosyne.BooleanFlag.Value"/> property.</param>
        </member>
        <member name="M:Tektosyne.BooleanSetClearFlag.Clear">
            <summary>
            Sets the <see cref="P:Tektosyne.BooleanFlag.Value"/> property to <c>false</c>.</summary>
            <remarks>
            <b>Clear</b> raises the <see cref="E:Tektosyne.BooleanFlag.ValueSet"/> event. If the old property
            value was <c>true</c>, <b>Clear</b> also raises the <see cref="E:Tektosyne.BooleanFlag.ValueChanged"/> event.</remarks>
        </member>
        <member name="P:Tektosyne.BooleanSetClearFlag.Value">
            <summary>
            Gets or sets the value of the <see cref="T:Tektosyne.BooleanSetClearFlag"/>.</summary>
            <value>
            The <see cref="T:System.Boolean"/> flag managed by this <see cref="T:Tektosyne.BooleanSetClearFlag"/> object.
            </value>
            <remarks>
            Setting <b>Value</b> raises the <see cref="E:Tektosyne.BooleanFlag.ValueSet"/> event. If the old
            property value was different from the new value, the <see cref="E:Tektosyne.BooleanFlag.ValueChanged"/> event is also raised.</remarks>
        </member>
        <member name="T:Tektosyne.ArgumentNullOrEmptyException">
            <summary>
            The exception that is thrown when a null reference or an empty object is passed to a method
            that does not accept them as a valid argument.</summary>
            <remarks><para>
            <b>ArgumentNullOrEmptyException</b> offers the same functionality as the standard class <see cref="T:System.ArgumentNullException"/>.
            </para><para>
            Methods should raise this exception to indicate an invalid argument of a composite type that
            is either a null reference or does not contain any elements. Such composite types include
            the <see cref="T:System.String"/> and <see cref="T:System.Array"/> classes, as well as any collection classes.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.ArgumentNullOrEmptyException.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.ArgumentNullOrEmptyException"/> class.
            </overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.ArgumentNullOrEmptyException"/> class with
            default properties.</summary>
            <remarks>
            Please refer to <see cref="M:System.ArgumentNullException.#ctor"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.ArgumentNullOrEmptyException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.ArgumentNullOrEmptyException"/> class with
            the name of the parameter that caused the exception.</summary>
            <param name="paramName">
            The name of the parameter that caused the exception.</param>
            <remarks>
            Please refer to <see cref="M:System.ArgumentNullException.#ctor(System.String)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.ArgumentNullOrEmptyException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.ArgumentNullOrEmptyException"/> class with
            the specified error message and with the previous exception that is the cause of this
            <see cref="T:Tektosyne.ArgumentNullOrEmptyException"/>.</summary>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <param name="innerException">
            The previous <see cref="T:System.Exception"/> that is the cause of the current <see cref="T:Tektosyne.ArgumentNullOrEmptyException"/>.</param>
            <remarks>
            Please refer to <see cref="M:System.ArgumentNullException.#ctor(System.String,System.Exception)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.ArgumentNullOrEmptyException.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.ArgumentNullOrEmptyException"/> class with
            the name of the parameter that caused the exception and with the specified error
            message.</summary>
            <param name="paramName">
            The name of the parameter that caused the exception.</param>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <remarks>
            Please refer to <see cref="M:System.ArgumentNullException.#ctor(System.String,System.String)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.ArgumentNullOrEmptyException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.ArgumentNullOrEmptyException"/> class with
            serialized data.</summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> object providing serialized object data for the <see cref="T:Tektosyne.ArgumentNullOrEmptyException"/>.</param>
            <param name="context">
            A <see cref="T:System.Runtime.Serialization.StreamingContext"/> object containing contextual information about the
            source or destination.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="info"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.ArgumentNullException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"/> for details.</remarks>
        </member>
        <member name="T:Tektosyne.MathUtility">
            <summary>
            Provides auxiliary methods for <b>System.Math</b>.</summary>
        </member>
        <member name="M:Tektosyne.MathUtility.Compare(System.Double,System.Double)">
            <overloads>
            Compares two specified numbers and returns an indication of their relative magnitudes,
            given a specified or default epsilon.</overloads>
            <summary>
            Compares two specified <see cref="T:System.Double"/> numbers and returns an indication of their
            relative magnitudes, given the default <see cref="F:System.Double.Epsilon"/>.</summary>
            <param name="a">
            The first <see cref="T:System.Double"/> number to compare.</param>
            <param name="b">
            The second <see cref="T:System.Double"/> number to compare.</param>
            <returns><list type="table"><listheader>
            <term>Value</term><description>Condition</description>
            </listheader><item>
            <term>Less than zero</term><description><paramref name="a"/> is less than <paramref name="b"/> by more than <see cref="F:System.Double.Epsilon"/>.</description>
            </item><item>
            <term>Zero</term><description>
            The absolute difference between <paramref name="a"/> and <paramref name="b"/> is less
            than or equal to <see cref="F:System.Double.Epsilon"/>.</description>
            </item><item>
            <term>Greater than zero</term><description><paramref name="a"/> is greater than
            <paramref name="b"/> by more than <see cref="F:System.Double.Epsilon"/>.</description>
            </item></list></returns>
        </member>
        <member name="M:Tektosyne.MathUtility.Compare(System.Double,System.Double,System.Double)">
            <summary>
            Compares two specified <see cref="T:System.Double"/> numbers and returns an indication of their
            relative magnitudes, given the specified epsilon.</summary>
            <param name="a">
            The first <see cref="T:System.Double"/> number to compare.</param>
            <param name="b">
            The second <see cref="T:System.Double"/> number to compare.</param>
            <param name="epsilon">
            The maximum absolute difference at which <paramref name="a"/> and <paramref name="b"/>
            should be considered equal.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="epsilon"/> is equal to or less than zero.</exception>
            <returns><list type="table"><listheader>
            <term>Value</term><description>Condition</description>
            </listheader><item>
            <term>Less than zero</term><description><paramref name="a"/> is less than <paramref name="b"/> by more than <paramref name="epsilon"/>.</description>
            </item><item>
            <term>Zero</term><description>
            The absolute difference between <paramref name="a"/> and <paramref name="b"/> is less
            than or equal to <paramref name="epsilon"/>.</description>
            </item><item>
            <term>Greater than zero</term><description><paramref name="a"/> is greater than
            <paramref name="b"/> by more than <paramref name="epsilon"/>.</description>
            </item></list></returns>
        </member>
        <member name="M:Tektosyne.MathUtility.Compare(System.Single,System.Single)">
            <summary>
            Compares two specified <see cref="T:System.Single"/> numbers and returns an indication of their
            relative magnitudes, given the default <see cref="F:System.Single.Epsilon"/>.</summary>
            <param name="a">
            The first <see cref="T:System.Single"/> number to compare.</param>
            <param name="b">
            The second <see cref="T:System.Single"/> number to compare.</param>
            <returns><list type="table"><listheader>
            <term>Value</term><description>Condition</description>
            </listheader><item>
            <term>Less than zero</term><description><paramref name="a"/> is less than <paramref name="b"/> by more than <see cref="F:System.Single.Epsilon"/>.</description>
            </item><item>
            <term>Zero</term><description>
            The absolute difference between <paramref name="a"/> and <paramref name="b"/> is less
            than or equal to <see cref="F:System.Single.Epsilon"/>.</description>
            </item><item>
            <term>Greater than zero</term><description><paramref name="a"/> is greater than
            <paramref name="b"/> by more than <see cref="F:System.Single.Epsilon"/>.</description>
            </item></list></returns>
        </member>
        <member name="M:Tektosyne.MathUtility.Compare(System.Single,System.Single,System.Single)">
            <summary>
            Compares two specified <see cref="T:System.Single"/> numbers and returns an indication of their
            relative magnitudes, given the specified epsilon.</summary>
            <param name="a">
            The first <see cref="T:System.Single"/> number to compare.</param>
            <param name="b">
            The second <see cref="T:System.Single"/> number to compare.</param>
            <param name="epsilon">
            The maximum absolute difference at which <paramref name="a"/> and <paramref name="b"/>
            should be considered equal.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="epsilon"/> is equal to or less than zero.</exception>
            <returns><list type="table"><listheader>
            <term>Value</term><description>Condition</description>
            </listheader><item>
            <term>Less than zero</term><description><paramref name="a"/> is less than <paramref name="b"/> by more than <paramref name="epsilon"/>.</description>
            </item><item>
            <term>Zero</term><description>
            The absolute difference between <paramref name="a"/> and <paramref name="b"/> is less
            than or equal to <paramref name="epsilon"/>.</description>
            </item><item>
            <term>Greater than zero</term><description><paramref name="a"/> is greater than
            <paramref name="b"/> by more than <paramref name="epsilon"/>.</description>
            </item></list></returns>
        </member>
        <member name="M:Tektosyne.MathUtility.Normalize(System.Double[])">
            <overloads>
            Normalizes the specified <see cref="T:System.Array"/> of non-negative numbers.</overloads>
            <summary>
            Normalizes the specified <see cref="T:System.Array"/> of non-negative <see cref="T:System.Double"/>
            numbers.</summary>
            <param name="array">
            The <see cref="T:System.Array"/> of non-negative <see cref="T:System.Double"/> numbers to normalize.
            </param>
            <returns>
            The sum of all values in <paramref name="array"/> before normalization.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="array"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="array"/> contains a negative value.</exception>
            <remarks><para>
            <b>Normalize</b> divides all values in <paramref name="array"/> by the sum of all
            values, thus normalizing the list of values to a partitioning of the standard interval
            [0,1].
            </para><para>
            If the sum of all values is zero, <b>Normalize</b> sets all values to the quotient
            1/<see cref="P:System.Array.Length"/> instead.</para></remarks>
        </member>
        <member name="M:Tektosyne.MathUtility.Normalize(System.Single[])">
            <summary>
            Normalizes the specified <see cref="T:System.Array"/> of non-negative <see cref="T:System.Single"/>
            numbers.</summary>
            <param name="array">
            The <see cref="T:System.Array"/> of non-negative <see cref="T:System.Single"/> numbers to normalize.
            </param>
            <returns>
            The sum of all values in <paramref name="array"/> before normalization.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="array"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="array"/> contains a negative value.</exception>
            <remarks><para>
            <b>Normalize</b> divides all values in <paramref name="array"/> by the sum of all
            values, thus normalizing the list of values to a partitioning of the standard interval
            [0,1].
            </para><para>
            If the sum of all values is zero, <b>Normalize</b> sets all values to the quotient
            1/<see cref="P:System.Array.Length"/> instead.</para></remarks>
        </member>
        <member name="T:Tektosyne.MersenneTwister">
            <summary>
            Provides a pseudo-random number generator.</summary>
            <remarks><para>
            <b>MersenneTwister</b> is an implementation of the random number generator MT19937,
            developed by Takuji Nishimura and Makoto Matsumoto. The various <see cref="T:System.Double"/>
            algorithms were added by Isaku Wada.
            </para><para>
            This C# implementation was created by Christoph Nahr, based on the above authors' revised C
            implementation dating from 26 January 2002.
            </para><para>
            The following copyright statement is reproduced from the original C program, as required by
            the copyright conditions. The original C program containing this copyright statement is
            available at the <a href="http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html">Mersenne
            Twister</a> home page.
            </para><para>
            <strong>Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, All rights
            reserved.</strong>
            </para><para>
            Redistribution and use in source and binary forms, with or without modification, are
            permitted provided that the following conditions are met:
            </para><list type="number"><item>
            Redistributions of source code must retain the above copyright notice, this list of
            conditions and the following disclaimer.
            </item><item>
            Redistributions in binary form must reproduce the above copyright notice, this list of
            conditions and the following disclaimer in the documentation and/or other materials provided
            with the distribution.
            </item><item>
            The names of its contributors may not be used to endorse or promote products derived from
            this software without specific prior written permission.
            </item></list><para>
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
            OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
            MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
            COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
            EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
            SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
            HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
            TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
            EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</para></remarks>
        </member>
        <member name="M:Tektosyne.MersenneTwister.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.MersenneTwister"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.MersenneTwister"/> class, using a
            time-dependent default seed value.</summary>
            <remarks>
            The new instance of the <see cref="T:Tektosyne.MersenneTwister"/> class is initialized with the
            current value of the <see cref="P:System.Environment.TickCount"/> property of the <see cref="T:System.Environment"/> class.</remarks>
        </member>
        <member name="M:Tektosyne.MersenneTwister.#ctor(System.UInt32)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.MersenneTwister"/> class, using the
            specified seed value.</summary>
            <param name="seed">
            A <see cref="T:System.UInt32"/> value used to initialize the pseudo-random number sequence.
            </param>
        </member>
        <member name="M:Tektosyne.MersenneTwister.#ctor(System.UInt32[])">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.MersenneTwister"/> class, using the
            specified array of initialization keys.</summary>
            <param name="keys">
            An <see cref="T:System.Array"/> of <see cref="T:System.UInt32"/> values used to initialize the
            pseudo-random number sequence.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="keys"/> is a null reference or an empty array.</exception>
        </member>
        <member name="M:Tektosyne.MersenneTwister.Next">
            <overloads>
            Returns a random <see cref="T:System.Int32"/> value.</overloads>
            <summary>
            Returns a non-negative random <see cref="T:System.Int32"/> value.</summary>
            <returns>
            A pseudo-random <see cref="T:System.Int32"/> value, greater than or equal to zero and less than
            or equal to <see cref="F:System.Int32.MaxValue"/>.</returns>
            <remarks>
            The <b>Next</b> methods have the same return type and similar (but closed) ranges as the
            <see cref="M:System.Random.Next"/> methods of the <see cref="T:System.Random"/> class.</remarks>
        </member>
        <member name="M:Tektosyne.MersenneTwister.Next(System.Int32)">
            <summary>
            Returns a non-negative random <see cref="T:System.Int32"/> value within the specified upper
            bound.</summary>
            <param name="maxValue">
            The upper bound of the random number to be generated.</param>
            <returns>
            A pseudo-random <see cref="T:System.Int32"/> value, greater than or equal to zero and less than
            or equal to the specified <paramref name="maxValue"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="maxValue"/> is less than zero.</exception>
            <remarks>
            The <b>Next</b> methods have the same return type and similar (but closed) ranges as the
            <see cref="M:System.Random.Next"/> methods of the <see cref="T:System.Random"/> class.</remarks>
        </member>
        <member name="M:Tektosyne.MersenneTwister.Next(System.Int32,System.Int32)">
            <summary>
            Returns a random <see cref="T:System.Int32"/> value within the specified lower and upper bounds.
            </summary>
            <param name="minValue">
            The lower bound of the random number to be generated.</param>
            <param name="maxValue">
            The upper bound of the random number to be generated.</param>
            <returns>
            A pseudo-random <see cref="T:System.Int32"/> value, greater than or equal to <paramref name="minValue"/> and less than or equal to <paramref name="maxValue"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="minValue"/> is greater than <paramref name="maxValue"/>.</exception>
            <remarks>
            The <b>Next</b> methods have the same return type and similar (but closed) ranges as the
            <see cref="M:System.Random.Next"/> methods of the <see cref="T:System.Random"/> class.</remarks>
        </member>
        <member name="M:Tektosyne.MersenneTwister.NextDouble">
            <summary>
            Returns a random <see cref="T:System.Double"/> value in the half-open interval [0, 1).</summary>
            <returns>
            A pseudo-random <see cref="T:System.Double"/> value, greater than or equal to zero and less than
            one.</returns>
            <remarks>
            <b>NextDouble</b> has the same return type and the same range as the <see cref="M:System.Random.NextDouble"/> method of the <see cref="T:System.Random"/> class.</remarks>
        </member>
        <member name="M:Tektosyne.MersenneTwister.NextDoubleClosed">
            <summary>
            Returns a random <see cref="T:System.Double"/> value in the closed interval [0, 1].</summary>
            <returns>
            A pseudo-random <see cref="T:System.Double"/> value, greater than or equal to zero and less than
            or equal to one.</returns>
        </member>
        <member name="M:Tektosyne.MersenneTwister.NextDoubleOpen">
            <summary>
            Returns a random <see cref="T:System.Double"/> value in the open interval (0, 1).</summary>
            <returns>
            A pseudo-random <see cref="T:System.Double"/> value, greater than zero and less than one.
            </returns>
        </member>
        <member name="M:Tektosyne.MersenneTwister.NextDouble53Bits">
            <summary>
            Returns a random <see cref="T:System.Double"/> value with a 53-bit resolution in the half-open
            interval [0, 1).</summary>
            <returns>
            A pseudo-random <see cref="T:System.Double"/> value with a 53-bit resolution, greater than or
            equal to zero and less than one.</returns>
            <remarks>
            <b>NextDouble53Bits</b> calls <see cref="M:Tektosyne.MersenneTwister.NextUnsigned"/> twice to compute its return
            value, taking 27 bits from the first result and 26 bits from the second result.
            </remarks>
        </member>
        <member name="M:Tektosyne.MersenneTwister.NextUnsigned">
            <summary>
            Returns a random <see cref="T:System.UInt32"/> value.</summary>
            <returns>
            A pseudo-random <see cref="T:System.UInt32"/> value, greater than or equal to zero and less than
            or equal to <see cref="F:System.UInt32.MaxValue"/>.</returns>
            <remarks>
            <b>NextUnsigned</b> is the basic random number generation method of the <see cref="T:Tektosyne.MersenneTwister"/> class. All other RNG methods call <b>NextUnsigned</b> to
            compute their return values.</remarks>
        </member>
        <member name="T:Tektosyne.Geometry.PolygonOrientation">
            <summary>
            Specifies the possible orientations of a <see cref="T:Tektosyne.Geometry.Polygon"/>.</summary>
            <remarks>
            <b>PolygonOrientation</b> specifies the two possible orientations of a regular polygon as
            represented by the <see cref="T:Tektosyne.Geometry.Polygon"/> class.</remarks>
        </member>
        <member name="F:Tektosyne.Geometry.PolygonOrientation.OnEdge">
            <summary>
            Specifies that the <see cref="T:Tektosyne.Geometry.Polygon"/> is lying on an edge.</summary>
        </member>
        <member name="F:Tektosyne.Geometry.PolygonOrientation.OnVertex">
            <summary>
            Specifies that the <see cref="T:Tektosyne.Geometry.Polygon"/> is standing on a vertex.</summary>
        </member>
        <member name="T:Tektosyne.Windows.FormatTextBlock">
            <summary>
            Provides a <see cref="T:System.Windows.Controls.TextBlock"/> that shows formatted data.</summary>
            <remarks>
            <b>FormatTextBlock</b> enhances <see cref="T:System.Windows.Controls.TextBlock"/> with persistent format
            specifications and methods that use these specifications to format their arguments. This
            simplifies showing formatted data, such as numbers, in a WPF application.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.FormatTextBlock.Show(System.Object[])">
            <overloads>
            Shows a formatted message containing the values of the specified objects.</overloads>
            <summary>
            Shows a formatted message containing the values of the specified objects.</summary>
            <param name="args">
            An <see cref="T:System.Array"/> of zero or more <see cref="T:System.Object"/> instances to be formatted.
            </param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="args"/> is a null reference.</exception>
            <exception cref="T:System.FormatException"><para>
            <see cref="P:Tektosyne.Windows.FormatTextBlock.Format"/> contains an invalid format specification.
            </para><para>-or-</para><para>
            A number indicating an argument to be formatted is less than zero, or greater than or
            equal to the length of the <paramref name="args"/> array.</para></exception>
            <remarks><para>
            <b>Show</b> invokes <see cref="M:System.String.Format(System.String,System.Object)"/> with the current <see cref="P:Tektosyne.Windows.FormatTextBlock.Format"/>
            specifications and the specified <paramref name="args"/> array, and assigns the
            resulting string to the <see cref="P:System.Windows.Controls.TextBlock.Text"/> property.
            </para><para>
            The <b>Text</b> property remains unchanged if an error occurred during formatting. The
            <see cref="P:Tektosyne.Windows.FormatTextBlock.AllowFormatException"/> property determines whether exceptions of type <see cref="T:System.FormatException"/> are propagated to the caller. Exceptions of any other type are
            always propagated to the caller.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.FormatTextBlock.Show(System.IFormatProvider,System.Object[])">
            <summary>
            Shows a formatted message containing the values of the specified objects, using the
            specified culture-specific formatting information.</summary>
            <param name="provider">
            An <see cref="T:System.IFormatProvider"/> object that supplies culture-specific formatting
            information.</param>
            <param name="args">
            An <see cref="T:System.Array"/> of zero or more <see cref="T:System.Object"/> instances to be formatted.
            </param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="args"/> is a null reference.</exception>
            <exception cref="T:System.FormatException"><para>
            <see cref="P:Tektosyne.Windows.FormatTextBlock.Format"/> contains an invalid format specification.
            </para><para>-or-</para><para>
            A number indicating an argument to be formatted is less than zero, or greater than or
            equal to the length of the <paramref name="args"/> array.</para></exception>
            <remarks><para>
            <b>Show</b> invokes <see cref="M:System.String.Format(System.String,System.Object)"/> with the current <see cref="P:Tektosyne.Windows.FormatTextBlock.Format"/>
            specifications and the specified <paramref name="provider"/> and <paramref name="args"/>
            array, and assigns the resulting string to the <see cref="P:System.Windows.Controls.TextBlock.Text"/> property.
            </para><para>
            The <b>Text</b> property remains unchanged if an error occurred during formatting. The
            <see cref="P:Tektosyne.Windows.FormatTextBlock.AllowFormatException"/> property determines whether exceptions of type <see cref="T:System.FormatException"/> are propagated to the caller. Exceptions of any other type are
            always propagated to the caller.</para></remarks>
        </member>
        <member name="P:Tektosyne.Windows.FormatTextBlock.AllowFormatException">
            <summary>
            Gets or sets a value indicating whether format exceptions are propagated to the client.
            </summary>
            <value>
            <c>true</c> if <see cref="M:Tektosyne.Windows.FormatTextBlock.Show(System.Object[])"/> propagates exceptions of type <see cref="T:System.FormatException"/> to the caller; otherwise, <c>false</c>. The default is
            <c>false</c>.</value>
            <remarks>
            Exceptions of a type other than <see cref="T:System.FormatException"/> are propagated to the
            client regardless of the value of <b>AllowFormatException</b>.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.FormatTextBlock.Format">
            <summary>
            Gets or sets the format specifications for the <see cref="T:Tektosyne.Windows.FormatTextBlock"/>.</summary>
            <value>
            A <see cref="T:System.String"/> containing zero or more format specifications that <see cref="M:Tektosyne.Windows.FormatTextBlock.Show(System.Object[])"/> will supply to <see cref="M:System.String.Format(System.String,System.Object)"/>. The default is the literal
            string "{0}".</value>
            <remarks><para>
            <b>Format</b> returns an empty string when set to a null reference. Changing this
            property has no effect until the next call to <see cref="M:Tektosyne.Windows.FormatTextBlock.Show(System.Object[])"/>.
            </para><para>
            Invalid format specifications may cause a <see cref="T:System.FormatException"/> whose
            propagation is controlled by the <see cref="P:Tektosyne.Windows.FormatTextBlock.AllowFormatException"/> property.
            </para></remarks>
        </member>
        <member name="T:Tektosyne.Windows.CustomColorDialog">
            <summary>
            Provides a <see cref="T:System.Windows.Forms.ColorDialog"/> with a persistent set of custom colors.</summary>
            <remarks>
            <b>CustomColorDialog</b> shows the custom color panel of the Windows Forms <see cref="T:System.Windows.Forms.ColorDialog"/> by default, and automatically persists the dialog's set of custom
            colors to a static <see cref="P:Tektosyne.Windows.CustomColorDialog.CustomColorSet"/> property if the static
            <see cref="M:Tektosyne.Windows.CustomColorDialog.Show(System.Windows.Forms.IWin32Window,System.Drawing.Color@)"/> methods are used to display the dialog.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.CustomColorDialog.#ctor(System.Drawing.Color)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.CustomColorDialog"/> class with the
            specified selected color.</summary>
            <param name="color">
            The initial value for the <see cref="P:System.Windows.Forms.ColorDialog.Color"/> property. <see cref="P:System.Drawing.Color.Transparent"/> translates to <see cref="P:System.Drawing.Color.Black"/>.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.Windows.CustomColorDialog"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:System.Windows.Forms.ColorDialog.AllowFullOpen"/></term>
            <description><c>true</c></description>
            </item><item>
            <term><see cref="P:System.Windows.Forms.ColorDialog.AnyColor"/></term><description><c>true</c></description>
            </item><item>
            <term><see cref="P:System.Windows.Forms.ColorDialog.Color"/></term>
            <description><paramref name="color"/>, or <b>Color.Black</b> if <paramref name="color"/>
            is <b>Color.Transparent</b>.</description>
            </item><item>
            <term><see cref="P:System.Windows.Forms.ColorDialog.CustomColors"/></term>
            <description>The value of the static <see cref="P:Tektosyne.Windows.CustomColorDialog.CustomColorSet"/> property.
            </description></item><item>
            <term><see cref="P:System.Windows.Forms.ColorDialog.FullOpen"/></term><description><c>true</c></description>
            </item><item>
            <term><see cref="P:System.Windows.Forms.ColorDialog.ShowHelp"/></term><description><c>false</c></description>
            </item><item>
            <term><see cref="P:System.Windows.Forms.ColorDialog.SolidColorOnly"/></term>
            <description><c>false</c></description>
            </item></list><para>
            A specified <paramref name="color"/> of <b>Color.Transparent</b> translates to the
            default value of <b>Color.Black</b> because <see cref="T:System.Windows.Forms.ColorDialog"/> cannot display or
            manipulate alpha channels.
            </para><para>
            The static <see cref="P:Tektosyne.Windows.CustomColorDialog.CustomColorSet"/> property is set by the <see cref="M:Tektosyne.Windows.CustomColorDialog.Show(System.Windows.Forms.IWin32Window,System.Drawing.Color@)"/>
            methods. Unfortunately, it is technically impossible to automatically set this property
            when a client explicitly creates a <see cref="T:Tektosyne.Windows.CustomColorDialog"/> control.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.CustomColorDialog.Show(System.Windows.Forms.IWin32Window,System.Drawing.Color@)">
            <overloads>
            Displays a <see cref="T:Tektosyne.Windows.CustomColorDialog"/> in front of the specified window and with the
            specified color initially selected.</overloads>
            <summary>
            Displays a <see cref="T:Tektosyne.Windows.CustomColorDialog"/> in front of the specified Windows Forms <see cref="T:System.Windows.Forms.IWin32Window"/> and with the specified GDI+ color initially selected.</summary>
            <param name="owner">
            A Windows Forms <see cref="T:System.Windows.Forms.IWin32Window"/> instance indicating the parent window of the
            dialog.</param>
            <param name="color"><para>
            The initial value for the <see cref="P:System.Windows.Forms.ColorDialog.Color"/> property. <see cref="P:System.Drawing.Color.Transparent"/> translates to <see cref="P:System.Drawing.Color.Black"/>.
            </para><para>
            On return, contains the current color selection if the dialog was dismissed by clicking
            <b>OK</b>; otherwise unchanged.</para></param>
            <returns>
            A <see cref="T:System.Windows.Forms.DialogResult"/> value indicating how the <see cref="T:Tektosyne.Windows.CustomColorDialog"/>
            was dismissed.</returns>
            <remarks><para>
            If the <see cref="T:Tektosyne.Windows.CustomColorDialog"/> was dismissed by clicking <b>OK</b>, <b>Show</b>
            stores the current color selection in the <paramref name="color"/> argument.
            </para><para>
            The current set of <see cref="P:System.Windows.Forms.ColorDialog.CustomColors"/> is stored in the static <see cref="P:Tektosyne.Windows.CustomColorDialog.CustomColorSet"/> property so that it can be restored when the next instance of
            the <b>CustomColorDialog</b> class is created.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.CustomColorDialog.Show(System.Windows.Window,System.Windows.Media.Color@)">
            <summary>
            Displays a <see cref="T:Tektosyne.Windows.CustomColorDialog"/> in front of the specified WPF <see cref="T:System.Windows.Window"/> and with the specified WPF color initially selected.</summary>
            <param name="owner">
            A WPF <see cref="T:System.Windows.Window"/> indicating the parent window of the dialog.</param>
            <param name="color"><para>
            The initial value for the <see cref="P:System.Windows.Forms.ColorDialog.Color"/> property. <see cref="P:System.Windows.Media.Colors.Transparent"/> translates to <see cref="P:System.Windows.Media.Colors.Black"/>.
            </para><para>
            On return, contains the current color selection if the dialog was dismissed by clicking
            <b>OK</b>; otherwise unchanged.</para></param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Windows.CustomColorDialog"/> was dismissed with a <see cref="T:System.Windows.Forms.DialogResult"/> of <see cref="F:System.Windows.Forms.DialogResult.OK"/>; otherwise, <c>false</c>.
            </returns>
            <remarks><para>
            If the <see cref="T:Tektosyne.Windows.CustomColorDialog"/> was dismissed by clicking <b>OK</b>, <b>Show</b>
            stores the current color selection in the <paramref name="color"/> argument.
            </para><para>
            The current set of <see cref="P:System.Windows.Forms.ColorDialog.CustomColors"/> is stored in the static <see cref="P:Tektosyne.Windows.CustomColorDialog.CustomColorSet"/> property so that it can be restored when the next instance of
            the <b>CustomColorDialog</b> class is created.</para></remarks>
        </member>
        <member name="P:Tektosyne.Windows.CustomColorDialog.CustomColorSet">
            <summary>
            Gets or sets the persistent set of custom colors for the <see cref="T:Tektosyne.Windows.CustomColorDialog"/>
            class.</summary>
            <value>
            An <see cref="T:System.Array"/> of <see cref="T:System.Int32"/> values that are the ARGB representations
            of <see cref="T:System.Drawing.Color"/> values. The default is a null reference.</value>
            <remarks><para>
            <b>CustomColorSet</b> supplies the initial value for the <see cref="P:System.Windows.Forms.ColorDialog.CustomColors"/> property whenever a new <see cref="T:Tektosyne.Windows.CustomColorDialog"/> control is created.
            </para><para>
            The property is set automatically by the <see cref="M:Tektosyne.Windows.CustomColorDialog.Show(System.Windows.Forms.IWin32Window,System.Drawing.Color@)"/> methods when the user
            dismissed the dialog by clicking <b>OK</b>. Clients may also set <b>CustomColorSet</b>
            to any arbitrary set of custom colors.
            </para><para>
            The name of this property is "CustomColorSet" rather than "CustomColors" because C# does
            not allow overloading a property based on its storage type.
            </para><note type="caution">
            Although static, <b>CustomColorSet</b> and the two <see cref="M:Tektosyne.Windows.CustomColorDialog.Show(System.Windows.Forms.IWin32Window,System.Drawing.Color@)"/> methods are 
            <em>not</em> thread-safe. This should not be an issue since dialogs are usually shown
            only on a single GUI thread per process.</note></remarks>
        </member>
        <member name="T:Tektosyne.Geometry.PolygonGrid">
            <summary>
            Represents a rectangular grid composed of regular polygons.</summary>
            <remarks><para>
            <b>PolygonGrid</b> represents a mesh of identical squares or regular hexagons. The shape of 
            each element is described by a <see cref="T:Tektosyne.Geometry.Polygon"/> object. There are no limitations on the
            polygon shape, except that it must have either four or six <see cref="P:Tektosyne.Geometry.Polygon.Sides"/>.
            </para><para>
            Each polygonal element within the <b>PolygonGrid</b> corresponds to a coordinate pair within
            an integer rectangle. That is, coordinates range from zero to a user-defined width and
            height. The exact mapping of elements to coordinates depends on the underlying <see cref="T:Tektosyne.Geometry.Polygon"/> and on the associated <see cref="T:Tektosyne.Geometry.PolygonGridShift"/> value.
            </para><para>
            <b>PolygonGrid</b> supports pathfinding algorithms through its implementation of the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> interface. Other methods provide topological information on grid
            coordinates, conversion to and from display coordinates, and the creation of a read-only
            wrapper similar to those provided by various <b>Collections</b> classes.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.#ctor(Tektosyne.Geometry.Polygon)">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> class with the specified
            element shape.</summary>
            <param name="element">
            The initial value for the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> property.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="element"/> is neither a square nor a hexagon.</exception>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="element"/> is a null reference.</exception>
            <remarks><para>
            The <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> property is initialized to an appropriate default value that
            depends on the specified <paramref name="element"/>.
            </para><para>
            The <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/> property is initialized to (1,1). All dependent sizes are
            initialized according to the specified property values.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.#ctor(Tektosyne.Geometry.Polygon,Tektosyne.Geometry.PolygonGridShift)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> class with the specified
            element shape and row or column shifting.</summary>
            <param name="element">
            The initial value for the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> property.</param>
            <param name="gridShift">
            The initial value for the <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> property.</param>
            <exception cref="T:System.ArgumentException"><para>
            <paramref name="element"/> is neither a square nor a hexagon.
            </para><para>-or-</para><para>
            <paramref name="gridShift"/> is not compatible with <paramref name="element"/>.
            </para></exception>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="element"/> is a null reference.</exception>
            <exception cref="T:System.ComponentModel.InvalidEnumArgumentException">
            <paramref name="gridShift"/> is not a valid <see cref="T:Tektosyne.Geometry.PolygonGridShift"/> value.
            </exception>
            <remarks>
            The <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/> property is initialized to (1,1). All dependent sizes are
            initialized according to the specified property values.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.#ctor(Tektosyne.Geometry.PolygonGrid)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> class that is a shallow copy
            of the specified instance.</summary>
            <param name="grid">
            The <see cref="T:Tektosyne.Geometry.PolygonGrid"/> object whose property values should be copied to the new
            instance.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="grid"/> is a null reference.</exception>
            <remarks><para>
            This "copy constructor" does not need to perform a deep copy as the associated <see cref="T:Tektosyne.Geometry.Polygon"/> object is immutable, and all other properties contain either structures
            or read-only values that depend on other properties.
            </para><note type="caution">
            Some properties return arrays that <em>can</em> be changed by clients, and any such
            changes would be reflected in both the specified <paramref name="grid"/> and the new
            <see cref="T:Tektosyne.Geometry.PolygonGrid"/> instance. Never modify arrays that are returned by properties!
            </note></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.#ctor(Tektosyne.Geometry.PolygonGrid.InstanceData)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> class that is a read-only
            view of the specified <see cref="T:Tektosyne.Geometry.PolygonGrid.InstanceData"/>.</summary>
            <param name="data">
            The <see cref="T:Tektosyne.Geometry.PolygonGrid.InstanceData"/> object that the new instance should share.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="data"/> is a null reference.</exception>
            <remarks>
            The <see cref="P:Tektosyne.Geometry.PolygonGrid.IsReadOnly"/> property is initialized to <c>true</c>. The new instance is
            its own read-only wrapper, i.e. <see cref="M:Tektosyne.Geometry.PolygonGrid.AsReadOnly"/> will return the instance it is
            invoked on.</remarks>
        </member>
        <member name="F:Tektosyne.Geometry.PolygonGrid.InvalidLocation">
            <summary>
            Represents an invalid <see cref="T:Tektosyne.Geometry.PolygonGrid"/> location.</summary>
            <remarks><para>
            <b>InvalidLocation</b> holds a <see cref="T:System.Drawing.Point"/> value whose <see cref="P:System.Drawing.Point.X"/>
            and <see cref="P:System.Drawing.Point.Y"/> components are both -1. This represents a location outside of
            any <see cref="T:Tektosyne.Geometry.PolygonGrid"/> since column and row indices are always zero-based.
            </para><para>
            Various <see cref="T:Tektosyne.Geometry.PolygonGrid"/> methods return <b>InvalidLocation</b> to indicate that
            a valid <see cref="T:Tektosyne.Geometry.PolygonGrid"/> location could not be found. Clients are encouraged to
            use this read-only field for the same purpose.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.CheckWritable">
            <summary>
            Checks that the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> can be modified.</summary>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Geometry.PolygonGrid"/> is read-only.</exception>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.DisplayToGridCore(System.Double,System.Double)">
            <summary>
            Converts the specified coordinate pair from display to <see cref="T:Tektosyne.Geometry.PolygonGrid"/>
            coordinates.</summary>
            <param name="x">
            The x-coordinate to convert.</param>
            <param name="y">
            The y-coordinate to convert.</param>
            <returns>
            The <see cref="T:Tektosyne.Geometry.PolygonGrid"/> location of the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> whose shape contains
            the specified <paramref name="x"/> and <paramref name="y"/> display coordinates.
            </returns>
            <remarks><para>
            <b>DisplayToGridCore</b> does not check whether the specified <paramref name="x"/> and
            <paramref name="y"/> coordinates are within the current <see cref="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds"/>.
            </para><para>
            Therefore, the returned grid coordinates may be less than zero or greater than the
            current <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/> minus one. In that case, they indicate elements on a 
            hypothetical extension of the actual <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.OnGeometryChanged">
            <summary>
            Updates all properties that depend on <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> and <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/>.
            </summary>
            <remarks><para>
            <b>OnGeometryChanged</b> recalculates the values of the <see cref="P:Tektosyne.Geometry.PolygonGrid.CenterDistance"/>,
            <see cref="P:Tektosyne.Geometry.PolygonGrid.EdgeNeighborOffsets"/>, and <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/> properties, based
            on the current values of the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> and <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/>
            properties.
            </para><para>
            <b>OnGeometryChanged</b> also invokes <see cref="M:Tektosyne.Geometry.PolygonGrid.OnSizeChanged"/> to recalculate all
            dependent properties accordingly.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.OnSizeChanged">
            <summary>
            Updates all properties that depend on <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/>,
            and <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/>.</summary>
            <remarks>
            <b>OnSizeChanged</b> recalculates the values of the <see cref="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.Figures"/>, and <see cref="P:Tektosyne.Geometry.PolygonGrid.VisibilityGraph"/> properties, based on the current
            values of the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/>, and <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/>
            properties.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.AreCompatible(Tektosyne.Geometry.Polygon,Tektosyne.Geometry.PolygonGridShift)">
            <summary>
            Determines whether the specified <see cref="T:Tektosyne.Geometry.Polygon"/> is compatible with the specified
            <see cref="T:Tektosyne.Geometry.PolygonGridShift"/> value.</summary>
            <param name="polygon">
            The <see cref="T:Tektosyne.Geometry.Polygon"/> to test.</param>
            <param name="gridShift">
            The <see cref="T:Tektosyne.Geometry.PolygonGridShift"/> value to test.</param>
            <returns>
            <c>true</c> if the specified <paramref name="polygon"/> and <paramref name="gridShift"/>
            value could be assigned to the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> and <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/>
            properties of the same <see cref="T:Tektosyne.Geometry.PolygonGrid"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentException">
            <paramref name="polygon"/> is neither a square nor a hexagon.</exception>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="polygon"/> is a null reference.</exception>
            <exception cref="T:System.ComponentModel.InvalidEnumArgumentException">
            <paramref name="gridShift"/> is not a valid <see cref="T:Tektosyne.Geometry.PolygonGridShift"/> value.
            </exception>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.AsReadOnly">
            <summary>
            Returns a read-only view of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <returns>
            A read-only wrapper around the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</returns>
            <remarks><para>
            Attempting to modify the read-only wrapper returned by <b>AsReadOnly</b> will raise a
            <see cref="T:System.NotSupportedException"/>. Note that the original <see cref="T:Tektosyne.Geometry.PolygonGrid"/>
            may still change, and any such changes will be reflected in the read-only view.
            </para><para>
            <b>AsReadOnly</b> buffers the newly created read-only wrapper when the method is first
            called, and returns the buffered value on subsequent calls. When invoked on a read-only
            view, <b>AsReadOnly</b> returns the instance it is invoked on.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.CreateArray(System.Type)">
            <summary>
            Creates a two-dimensional array of the specified element type, and with the same <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/> as the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <param name="elementType">
            The <see cref="T:System.Type"/> of the elements of the created <see cref="T:System.Array"/>.</param>
            <returns>
            A two-dimensional <see cref="T:System.Array"/> of the specified <paramref name="elementType"/>
            whose dimensions equal the current <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/>.</returns>
            <exception cref="T:System.ArgumentException">
            <paramref name="elementType"/> is not a valid <see cref="T:System.Type"/>.</exception>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="elementType"/> is a null reference.</exception>
            <exception cref="T:System.NotSupportedException">
            <paramref name="elementType"/> is not supported for <see cref="T:System.Array"/> creation.
            </exception>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.CreateBooleanArray">
            <summary>
            Creates a two-dimensional array of <see cref="T:System.Boolean"/> values, and with the same <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/> as the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <returns>
            A two-dimensional <see cref="T:System.Array"/> of <see cref="T:System.Boolean"/> values whose dimensions
            equal the current <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/>.</returns>
            <remarks>
            All elements in the returned array are initialized to <c>false</c>.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.DisplayToGrid(System.Double,System.Double)">
            <overloads>
            Converts the specified display location to <see cref="T:Tektosyne.Geometry.PolygonGrid"/> coordinates.
            </overloads>
            <summary>
            Converts the specified coordinate pair from display to <see cref="T:Tektosyne.Geometry.PolygonGrid"/>
            coordinates.</summary>
            <param name="x">
            The x-coordinate to convert.</param>
            <param name="y">
            The y-coordinate to convert.</param>
            <returns><para>
            The <see cref="T:Tektosyne.Geometry.PolygonGrid"/> location of the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> whose shape contains
            the specified <paramref name="x"/> and <paramref name="y"/> display coordinates.
            </para><para>-or-</para><para>
            The constant value <see cref="F:Tektosyne.Geometry.PolygonGrid.InvalidLocation"/> if no such <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>
            exists.</para></returns>
            <remarks>
            <b>DisplayToGrid</b> returns coordinates between (0,0) and one less than the current
            <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/> in either dimension if the specified coordinates are within the
            current <see cref="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds"/>, and the constant value <see cref="F:Tektosyne.Geometry.PolygonGrid.InvalidLocation"/> otherwise.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.DisplayToGrid(System.Windows.Point)">
            <summary>
            Converts the specified <see cref="T:System.Windows.Point"/> from display to <see cref="T:Tektosyne.Geometry.PolygonGrid"/> 
            coordinates.</summary>
            <param name="location">
            The <see cref="T:System.Windows.Point"/> to convert.</param>
            <returns><para>
            The <see cref="T:Tektosyne.Geometry.PolygonGrid"/> location of the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> whose shape contains
            the specified display <paramref name="location"/>.
            </para><para>-or-</para><para>
            The constant value <see cref="F:Tektosyne.Geometry.PolygonGrid.InvalidLocation"/> if no such <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>
            exists.</para></returns>
            <remarks>
            <b>DisplayToGrid</b> returns coordinates between (0,0) and one less than the current
            <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/> in either dimension if the specified <paramref name="location"/> is
            within the current <see cref="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds"/>, and the constant value <see cref="F:Tektosyne.Geometry.PolygonGrid.InvalidLocation"/> otherwise.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.DisplayToGridClipped(System.Double,System.Double)">
            <overloads>
            Converts the specified display location to <see cref="T:Tektosyne.Geometry.PolygonGrid"/> coordinates,
            clipping to the nearest element if necessary.</overloads>
            <summary>
            Converts the specified coordinate pair from display to <see cref="T:Tektosyne.Geometry.PolygonGrid"/>
            coordinates, clipping to the nearest element if necessary.</summary>
            <param name="x">
            The x-coordinate to convert.</param>
            <param name="y">
            The y-coordinate to convert.</param>
            <returns><para>
            The <see cref="T:Tektosyne.Geometry.PolygonGrid"/> location of the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> whose shape contains
            the specified <paramref name="x"/> and <paramref name="y"/> display coordinates.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Geometry.PolygonGrid"/> location nearest to the specified <paramref name="x"/> and
            <paramref name="y"/> display coordinates if no such <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> exists.
            </para></returns>
            <remarks>
            <b>DisplayToGridClipped</b> always returns coordinates between (0,0) and one less than
            the current <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/> in either dimension, regardless of whether the specified
            coordinates are within the current <see cref="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.DisplayToGridClipped(System.Windows.Point)">
            <summary>
            Converts the specified <see cref="T:System.Windows.Point"/> from display to <see cref="T:Tektosyne.Geometry.PolygonGrid"/> 
            coordinates, clipping to the nearest element if necessary.</summary>
            <param name="location">
            The <see cref="T:System.Windows.Point"/> to convert.</param>
            <returns><para>
            The <see cref="T:Tektosyne.Geometry.PolygonGrid"/> location of the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> whose shape contains
            the specified display <paramref name="location"/>.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Geometry.PolygonGrid"/> location nearest to the specified display <paramref name="location"/> if no such <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> exists.</para></returns>
            <remarks>
            <b>DisplayToGridClipped</b> always returns coordinates between (0,0) and one less than
            the current <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/> in either dimension, regardless of whether the specified
            <paramref name="location"/> is within the current <see cref="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.Draw(System.Windows.Media.StreamGeometryContext,System.Windows.Vector,System.Boolean)">
            <summary>
            Draws the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> to a specified <see cref="T:System.Windows.Media.StreamGeometry"/>.
            </summary>
            <param name="context">
            The <see cref="T:System.Windows.Media.StreamGeometryContext"/> that receives the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            </param>
            <param name="isFilled">
            <c>true</c> to use the area contained by each polygonal <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> for
            hit-testing, rendering, and clipping; otherwise, <c>false</c>.</param>
            <param name="offset">
            The offset by which to shift the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</param>
            <remarks><para>
            <b>Draw</b> invokes <see cref="M:Tektosyne.Geometry.Polygon.Draw(System.Windows.Media.StreamGeometryContext,System.Windows.Vector,System.Boolean)"/> for each <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> in the
            <see cref="T:Tektosyne.Geometry.PolygonGrid"/>, shifted by the corresponding <see cref="M:Tektosyne.Geometry.PolygonGrid.GridToDisplay(System.Int32,System.Int32)"/>
            result. Each polygonal <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> is therefore represented by one figure.
            </para><para>
            All coordinates are also shifted by the specified <paramref name="offset"/>.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.DrawOptimized(System.Windows.Media.StreamGeometryContext,System.Windows.Vector)">
            <summary>
            Draws the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> to a specified <see cref="T:System.Windows.Media.StreamGeometry"/>, with
            optimization to remove duplicate lines.</summary>
            <param name="context">
            The <see cref="T:System.Windows.Media.StreamGeometryContext"/> that receives the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            </param>
            <param name="offset">
            The offset by which to shift the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</param>
            <remarks><para>
            <b>DrawOptimized</b> shifts the <see cref="P:Tektosyne.Geometry.Polygon.Vertices"/> of each <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> in the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> by the corresponding <see cref="M:Tektosyne.Geometry.PolygonGrid.GridToDisplay(System.Int32,System.Int32)"/> result plus the specified <paramref name="offset"/>.
            </para><para>
            <b>DrawOptimized</b> skips any <see cref="T:Tektosyne.Geometry.Polygon"/> edges that coincide with a line
            drawn (in the same or reverse direction) for a previous <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>. This
            optimization results in a total number of lines drawn to the specified <paramref name="context"/> that is about half that of <see cref="M:Tektosyne.Geometry.PolygonGrid.Draw(System.Windows.Media.StreamGeometryContext,System.Windows.Vector,System.Boolean)"/>.
            </para><para>
            There are two disadvantages. First, <b>DrawOptimized</b> requires more time and memory
            than <see cref="M:Tektosyne.Geometry.PolygonGrid.Draw(System.Windows.Media.StreamGeometryContext,System.Windows.Vector,System.Boolean)"/> due to the additional vertex comparisons. Second, most polygons
            are not represented by closed figures within the specified <paramref name="context"/>,
            and so the area contained by an <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> is never considered filled for
            hit-testing, rendering, and clipping.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.GetEdgeNeighborOffsets(System.Drawing.Point)">
            <summary>
            Gets the inner array within <see cref="P:Tektosyne.Geometry.PolygonGrid.EdgeNeighborOffsets"/> that matches the specified
            location.</summary>
            <param name="location">
            The coordinates of the location to examine.</param>
            <returns>
            The inner array within <see cref="P:Tektosyne.Geometry.PolygonGrid.EdgeNeighborOffsets"/> that matches the specified
            <paramref name="location"/>.</returns>
            <remarks><para>
            <b>GetEdgeNeighborOffsets</b> does not check whether the specified <paramref name="location"/> is actually within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            </para><para>
            Please refer to <see cref="P:Tektosyne.Geometry.PolygonGrid.EdgeNeighborOffsets"/> and <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/> for
            a description of the storage format used for neighbor coordinate offsets.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.GetElementBounds(System.Int32,System.Int32)">
            <overloads>
            Gets the bounding rectangle of the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> at the specified <see cref="T:Tektosyne.Geometry.PolygonGrid"/> location.</overloads>
            <summary>
            Gets the bounding rectangle of the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> at the specified column and row
            indices.</summary>
            <param name="column">
            The zero-based index of a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> column.</param>
            <param name="row">
            The zero-based index of a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> row.</param>
            <returns>
            The <see cref="T:System.Windows.Rect"/> that circumscribes the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> shape at the
            specified <paramref name="column"/> and <paramref name="row"/>.</returns>
            <remarks>
            <b>GetElementBounds</b> always returns a region within the current <see cref="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds"/> if the specified coordinates are within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>, but does not check whether that is the case.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.GetElementBounds(System.Drawing.Point)">
            <summary>
            Gets the bounding rectangle of the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> at the specified <see cref="T:System.Drawing.Point"/> location.</summary>
            <param name="location">
            The coordinates of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> location to examine.</param>
            <returns>
            The <see cref="T:System.Windows.Rect"/> that circumscribes the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> shape at the
            specified <paramref name="location"/>.</returns>
            <remarks>
            <b>GetElementBounds</b> always returns a region within the current <see cref="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds"/> if the specified <paramref name="location"/> is within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>, but does not check whether that is the case.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.GetElementBounds(System.Drawing.Rectangle)">
            <summary>
            Gets the bounding rectangle of all <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> shapes within the specified
            region.</summary>
            <param name="region">
            A <see cref="T:System.Drawing.Rectangle"/> comprising the coordinates of all <see cref="T:Tektosyne.Geometry.PolygonGrid"/>
            locations to examine.</param>
            <returns>
            The <see cref="T:System.Windows.Rect"/> that circumscribes all <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> shapes within the
            specified <paramref name="region"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="region"/> contains a <see cref="P:System.Drawing.Rectangle.Width"/> or <see cref="P:System.Drawing.Rectangle.Height"/> that is zero or negative.</exception>
            <remarks>
            <b>GetElementBounds</b> always returns a region within the current <see cref="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds"/> if the specified <paramref name="region"/> is fully within the
            <see cref="T:Tektosyne.Geometry.PolygonGrid"/>, but does not check whether that is the case.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.GetNeighbor(System.Drawing.Point,System.Int32)">
            <summary>
            Returns the coordinates of the location that borders the specified location on the
            specified edge or vertex.</summary>
            <param name="location">
            The coordinates of the location whose neighbor to return.</param>
            <param name="index">
            A zero-based index for the inner arrays within <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/>, indicating
            an edge or vertex of the specified <paramref name="location"/>.</param>
            <returns>
            The coordinates of the location that borders the specified <paramref name="location"/>
            on the edge or vertex indicated by the specified <paramref name="index"/>.</returns>
            <remarks><para>
            <b>GetNeighbor</b> does not check whether the specified <paramref name="location"/> or
            the returned coordinates are actually within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>. You must
            perform your own coordinate validation if desired.
            </para><para>
            The specified <paramref name="index"/> is taken <see cref="M:Tektosyne.Fortran.Modulo(System.Decimal,System.Decimal)"/> the length
            of the inner arrays within <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/>, and may therefore be negative
            or greater than the maximum index.
            </para><para>
            Please refer to <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/> for a description of the index order.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.GetNeighborIndex(System.Drawing.Point,System.Drawing.Point)">
            <summary>
            Returns the edge or vertex on which the specified location borders another neighboring
            location.</summary>
            <param name="location">
            The coordinates of the location whose edge or vertex to return.</param>
            <param name="neighbor">
            The coordinates of a neighboring location.</param>
            <returns>
            A zero-based index for the inner arrays within <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/>, indicating
            the edge or vertex of the specified <paramref name="location"/> on which it borders the
            specified <paramref name="neighbor"/>.</returns>
            <exception cref="T:System.ArgumentException">
            <paramref name="location"/> and <paramref name="neighbor"/> are not coordinates of
            neighboring locations in the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</exception>
            <remarks><para>
            <b>GetNeighborIndex</b> does not check whether the specified <paramref name="location"/> 
            or <paramref name="neighbor"/> are actually within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>. You
            must perform your own coordinate validation if desired.
            </para><para>
            <b>GetNeighborIndex</b> is the inverse of the <see cref="M:Tektosyne.Geometry.PolygonGrid.GetNeighbor(System.Drawing.Point,System.Int32)"/> method. That is,
            the following relations hold for all locations <em>p</em> with valid neighbors
            <em>q</em> and neighbor indices <em>i</em>:
            </para><para><code>
            GetNeighbor(p, GetNeighborIndex(p, q)) == q;<br/>
            GetNeighborIndex(p, GetNeighbor(p, i)) == i;</code>
            </para><para>
            Please refer to <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/> for a description of the index order.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.GetNeighborOffsets(System.Drawing.Point)">
            <summary>
            Gets the inner array within <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/> that matches the specified
            location.</summary>
            <param name="location">
            The coordinates of the location to examine.</param>
            <returns>
            The inner array within <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/> that matches the specified
            <paramref name="location"/>.</returns>
            <remarks><para>
            <b>GetNeighborOffsets</b> does not check whether the specified <paramref name="location"/> is actually within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            </para><para>
            Please refer to <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/> for a description of the storage format
            used for neighbor coordinate offsets.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.GridToDisplay(System.Int32,System.Int32)">
            <overloads>
            Converts the specified <see cref="T:Tektosyne.Geometry.PolygonGrid"/> location to display coordinates.
            </overloads>
            <summary>
            Converts the specified column and row indices from <see cref="T:Tektosyne.Geometry.PolygonGrid"/> to display
            coordinates.</summary>
            <param name="column">
            The zero-based index of a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> column.</param>
            <param name="row">
            The zero-based index of a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> row.</param>
            <returns>
            The display coordinates of the center of the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> shape at the
            specified <paramref name="column"/> and <paramref name="row"/>.</returns>
            <remarks>
            <b>GridToDisplay</b> always returns coordinates within the current <see cref="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds"/> if the specified coordinates are within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>, but does not check whether that is the case.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.GridToDisplay(System.Drawing.Point)">
            <summary>
            Converts the specified <see cref="T:System.Drawing.Point"/> from <see cref="T:Tektosyne.Geometry.PolygonGrid"/> to display
            coordinates.</summary>
            <param name="location">
            The <see cref="T:System.Drawing.Point"/> to convert.</param>
            <returns>
            The display coordinates of the center of the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> shape at the
            specified <paramref name="location"/> in the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</returns>
            <remarks>
            <b>GridToDisplay</b> always returns coordinates within the current <see cref="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds"/> if the specified <paramref name="location"/> is within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>, but does not check whether that is the case.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.IsDownColumn(System.Int32)">
            <summary>
            Determines whether the specified column is shifted down compared to the neighboring
            columns in the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <param name="column">
            The zero-based index of a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> column.</param>
            <returns>
            <c>true</c> if <paramref name="column"/> is shifted downward compared to its neighbors,
            given the current <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/>; otherwise, <c>false</c>.</returns>
            <remarks><para>
            <b>IsDownColumn</b> does not check whether the specified <paramref name="column"/> is a
            valid column index within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            </para><para>
            <b>IsDownColumn</b> returns <c>false</c> for all <paramref name="column"/> values if the
            current <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> value is neither <see cref="F:Tektosyne.Geometry.PolygonGridShift.ColumnUp"/>
            nor <see cref="F:Tektosyne.Geometry.PolygonGridShift.ColumnDown"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.IsLeftRow(System.Int32)">
            <summary>
            Determines whether the specified row is shifted left compared to the neighboring rows in
            the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <param name="row">
            The zero-based index of a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> row.</param>
            <returns>
            <c>true</c> if <paramref name="row"/> is shifted to the left compared to its neighbors,
            given the current <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/>; otherwise, <c>false</c>.</returns>
            <remarks><para>
            <b>IsLeftRow</b> does not check whether the specified <paramref name="column"/> is a
            valid column index within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            </para><para>
            <b>IsLeftRow</b> returns <c>false</c> for all <paramref name="column"/> values if the
            current <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> value is neither <see cref="F:Tektosyne.Geometry.PolygonGridShift.RowLeft"/>
            nor <see cref="F:Tektosyne.Geometry.PolygonGridShift.RowRight"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.IsRightRow(System.Int32)">
            <summary>
            Determines whether the specified row is shifted right compared to the neighboring rows
            in the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <param name="row">
            The zero-based index of a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> row.</param>
            <returns>
            <c>true</c> if <paramref name="row"/> is shifted to the right compared to its neighbors,
            given the current <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/>; otherwise, <c>false</c>.</returns>
            <remarks><para>
            <b>IsRightRow</b> does not check whether the specified <paramref name="column"/> is a
            valid column index within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            </para><para>
            <b>IsRightRow</b> returns <c>false</c> for all <paramref name="column"/> values if the
            current <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> value is neither <see cref="F:Tektosyne.Geometry.PolygonGridShift.RowLeft"/>
            nor <see cref="F:Tektosyne.Geometry.PolygonGridShift.RowRight"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.IsUpColumn(System.Int32)">
            <summary>
            Determines whether the specified column is shifted up compared to the neighboring
            columns in the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <param name="column">
            The zero-based index of a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> column.</param>
            <returns>
            <c>true</c> if <paramref name="column"/> is shifted upward compared to its neighbors,
            given the current <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/>; otherwise, <c>false</c>.</returns>
            <remarks><para>
            <b>IsUpColumn</b> does not check whether the specified <paramref name="column"/> is a
            valid column index within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            </para><para>
            <b>IsUpColumn</b> returns <c>false</c> for all <paramref name="column"/> values if the
            current <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> value is neither <see cref="F:Tektosyne.Geometry.PolygonGridShift.ColumnUp"/>
            nor <see cref="F:Tektosyne.Geometry.PolygonGridShift.ColumnDown"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.Clone">
            <summary>
            Creates a shallow copy of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <returns>
            A new <see cref="T:Tektosyne.Geometry.PolygonGrid"/> instance that is a shallow copy of the current instance.
            </returns>
            <remarks><para>
            <b>Clone</b> invokes the "copy constructor", <see cref="M:Tektosyne.Geometry.PolygonGrid.#ctor(Tektosyne.Geometry.PolygonGrid)"/>, to
            create a shallow copy of the current instance.
            </para><para>
            <b>Clone</b> does not preserve the value of the <see cref="P:Tektosyne.Geometry.PolygonGrid.IsReadOnly"/> property. The
            new <see cref="T:Tektosyne.Geometry.PolygonGrid"/> will be mutable even if the current instance is read-only.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.Contains(System.Int32,System.Int32)">
            <overloads>
            Determines whether the specified locations are contained within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</overloads>
            <summary>
            Determines whether the specified coordinate pair is contained within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <param name="x">
            The x-coordinate to test.</param>
            <param name="y">
            The y-coordinate to test.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> contains the specified <paramref name="x"/>
            and <paramref name="y"/> coordinates; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.Contains(System.Drawing.Point)">
            <summary>
            Determines whether the specified <see cref="T:System.Drawing.Point"/> is contained within the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <param name="location">
            The <see cref="T:System.Drawing.Point"/> to test.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> contains the specified <paramref name="location"/>; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.Contains(System.Drawing.Rectangle)">
            <summary>
            Determines whether the specified <see cref="T:System.Drawing.Rectangle"/> is entirely contained within the
            <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <param name="rect">
            The <see cref="T:System.Drawing.Rectangle"/> to test.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> entirely contains the specified <paramref name="rectangle"/>; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.GetDistance(System.Drawing.Point,System.Drawing.Point)">
            <summary>
            Returns the distance between the two specified locations.</summary>
            <param name="source">
            The coordinates of the first location.</param>
            <param name="target">
            The coordinates of the second location.</param>
            <returns>
            The non-negative distance between <paramref name="source"/> and <paramref name="target"/>, measured in location transitions.</returns>
            <remarks><para>
            <b>GetDistance</b> returns zero if the specified <paramref name="source"/> and <paramref name="target"/> are identical, and the minimum number of location transitions required
            to move from <paramref name="source"/> to <paramref name="target"/> otherwise.
            </para><para>
            <b>GetDistance</b> does not check whether the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> actually
            contains the specified <paramref name="source"/> and <paramref name="target"/>
            locations.
            </para><para>
            All distance calculations are O(1) operations, regardless of the concrete values of
            <paramref name="source"/> and <paramref name="target"/>. The calculations for hexagon
            grids were adopted from a Usenet post by Matthew V. Jessick.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.GetNeighbors(System.Drawing.Point)">
            <overloads>
            Returns all locations within a certain distance of the specified location.</overloads>
            <summary>
            Returns all immediate neighbors of the specified location.</summary>
            <param name="location">
            The coordinates of the location whose neighbors to return.</param>
            <returns>
            A <see cref="T:System.Collections.Generic.List`1"/> containing the coordinates of all locations whose distance
            to the specified <paramref name="location"/> is exactly one. The number of elements is
            at most <see cref="P:Tektosyne.Geometry.PolygonGrid.Connectivity"/>.</returns>
            <remarks><para>
            <b>GetNeighbors</b> never returns a null reference, but it returns an empty <see cref="T:System.Collections.Generic.List`1"/> if the specified <paramref name="location"/> or all its neighbors
            are outside the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            </para><para>
            The sequence of neighbors is obtained by adding each element in the appropriate inner
            array within <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/> to the specified <paramref name="location"/>,
            omitting any neighbors outside the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.GetNeighbors(System.Drawing.Point,System.Int32)">
            <summary>
            Returns all locations within the specified distance of the specified location.</summary>
            <param name="location">
            The coordinates of the location whose neighbors to return.</param>
            <param name="distance">
            The distance around the specified <paramref name="location"/> in which another location
            is considered a neighbor.</param>
            <returns>
            A <see cref="T:System.Collections.Generic.List`1"/> containing the coordinates of all locations whose distance
            to the specified <paramref name="location"/> is greater than zero and equal to or less
            than <paramref name="distance"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="distance"/> is zero or negative.</exception>
            <remarks><para>
            <b>GetNeighbors</b> never returns a null reference, but it returns an empty <see cref="T:System.Collections.Generic.List`1"/> if the specified <paramref name="location"/> or all its neighbors
            are outside the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            </para><para>
            If a non-empty <see cref="T:System.Collections.Generic.List`1"/> is returned, its elements are ordered by
            increasing x-coordinates and increasing y-coordinates.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.GraphToWorld(System.Drawing.Point)">
            <summary>
            Converts the specified location from graph to world coordinates.</summary>
            <param name="location">
            The graph coordinates of the location to convert.</param>
            <returns>
            The world coordinates of the specified <paramref name="location"/>.</returns>
            <remarks>
            <b>GraphToWorld</b> returns the result of <see cref="M:Tektosyne.Geometry.PolygonGrid.GridToDisplay(System.Drawing.Point)"/> for the
            specified <paramref name="location"/>. That is, the world coordinates defined by the
            <see cref="T:Tektosyne.Geometry.PolygonGrid"/> class are equivalent to display coordinates.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.IndexOfLocation(System.Drawing.Point)">
            <summary>
            Returns the unique index associated with the specified location.</summary>
            <param name="location">
            The coordinates of the location whose index to return.</param>
            <returns>
            A non-negative <see cref="T:System.Int32"/> value that uniquely identifies the specified
            <paramref name="location"/>. This value is always less than <see cref="P:Tektosyne.Geometry.PolygonGrid.Locations"/>.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="location"/> contains coordinates that are negative or greater than the
            corresponding <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/> dimension.</exception>
            <remarks>
            <b>IndexOfLocation</b> does not perform range checking in release builds, so as to
            enable inlining by the JIT compiler.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.AreColumnsShifted">
            <summary>
            Gets a value indicating whether the columns of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> are
            shifted.</summary>
            <value>
            <c>true</c> if <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> equals <see cref="F:Tektosyne.Geometry.PolygonGridShift.ColumnUp"/> or
            <see cref="F:Tektosyne.Geometry.PolygonGridShift.ColumnDown"/>; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.AreRowsShifted">
            <summary>
            Gets a value indicating whether the rows of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> are shifted.
            </summary>
            <value>
            <c>true</c> if <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> equals <see cref="F:Tektosyne.Geometry.PolygonGridShift.RowLeft"/> or
            <see cref="F:Tektosyne.Geometry.PolygonGridShift.RowRight"/>; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.CenterDistance">
            <summary>
            Gets the display distance between the center points of neighboring <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>
            shapes.</summary>
            <value>
            A <see cref="T:System.Windows.Size"/> value indicating the display distance between the center points of
            neighboring <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> shapes, given the current values of the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> and <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> properties.</value>
            <remarks><para>
            The <see cref="P:System.Windows.Size.Width"/> component of <b>CenterDistance</b> holds the horizontal 
            distance between neighboring elements within the same row, and the <see cref="P:System.Windows.Size.Height"/> component holds the vertical distance between neighboring elements
            within the same column.
            </para><para>
            <b>CenterDistance</b> is recalculated automatically whenever the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>
            or <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> properties change.</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds">
            <summary>
            Gets the display bounds of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <value>
            A <see cref="T:System.Windows.Rect"/> indicating the display bounds of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>,
            given the current values of the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/>, and <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/> properties.</value>
            <remarks>
            The upper-left corner of <b>DisplayBounds</b> is always (0,0). The lower-right corner is
            automatically recalculated whenever the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/>,
            or <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/> properties change.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.EdgeNeighborOffsets">
            <summary>
            Gets a list of all coordinate offsets to reach a neighboring location on a shared edge.
            </summary>
            <value>
            A jagged <see cref="T:System.Array"/> containing 1 x 4, 2 x 4, or 2 x 6 <see cref="T:System.Drawing.Point"/>
            values whose coordinates range from -1 to +1.</value>
            <remarks><para>
            <b>EdgeNeighborOffsets</b> is identical to <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/> except that its
            inner arrays never contain offsets to neighboring locations on shared vertices, even if
            <see cref="P:Tektosyne.Geometry.Polygon.VertexNeighbors"/> is <c>true</c> for the current <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>. Use <see cref="M:Tektosyne.Geometry.PolygonGrid.GetEdgeNeighborOffsets(System.Drawing.Point)"/> to determine the correct
            inner array for a given location.
            </para><para>
            <b>EdgeNeighborOffsets</b> is recalculated automatically whenever the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> or <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> properties change.</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.Element">
            <summary>
            Gets or sets the <see cref="T:Tektosyne.Geometry.Polygon"/> that constitutes an element of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <value>
            The <see cref="T:Tektosyne.Geometry.Polygon"/> object that constitutes an element of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</value>
            <exception cref="T:System.ArgumentException">
            The property is set to a <see cref="T:Tektosyne.Geometry.Polygon"/> that is neither a square nor a hexagon.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            The property is set to a null reference.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Geometry.PolygonGrid"/> is read-only.</exception>
            <remarks>
            Setting <b>Element</b> also resets <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> to an appropriate default
            value if the current value is incompatible with the new <b>Element</b>, and recalculates
            the <see cref="P:Tektosyne.Geometry.PolygonGrid.CenterDistance"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.EdgeNeighborOffsets"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.Figures"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/>, and
            <see cref="P:Tektosyne.Geometry.PolygonGrid.VisibilityGraph"/> properties accordingly.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.Figures">
            <summary>
            Gets a <see cref="T:System.Windows.Media.PathFigureCollection"/> that represents the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            </summary>
            <value>
            A <see cref="T:System.Windows.Media.PathFigureCollection"/> containing one <see cref="T:System.Windows.Media.PathFigure"/> for each
            polygonal <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> in the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</value>
            <remarks><para>
            <b>Figures</b> contains the results of <see cref="M:Tektosyne.Geometry.Polygon.ToFigure(System.Windows.Vector)"/> for each
            <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> in the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>, shifted by the corresponding
            <see cref="M:Tektosyne.Geometry.PolygonGrid.GridToDisplay(System.Int32,System.Int32)"/> result. Each polygonal <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> is therefore
            represented by one <see cref="T:System.Windows.Media.PathFigure"/>.
            </para><para>
            <b>Figures</b> is automatically recreated whenever the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/>, or <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/> properties change. While these properties
            remain unchanged, the returned <see cref="T:System.Windows.Media.PathFigureCollection"/> is frozen and cached.
            </para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.GridShift">
            <summary>
            Gets or sets the shifting of rows or columns in the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <value>
            A <see cref="T:Tektosyne.Geometry.PolygonGridShift"/> value indicating the shifting of <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>
            rows or columns in the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</value>
            <exception cref="T:System.ArgumentException">
            The property is set to a <see cref="T:Tektosyne.Geometry.PolygonGridShift"/> value that is not compatible
            with the current <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>.</exception>
            <exception cref="T:System.ComponentModel.InvalidEnumArgumentException">
            The property is set to an invalid <see cref="T:Tektosyne.Geometry.PolygonGridShift"/> value.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Geometry.PolygonGrid"/> is read-only.</exception>
            <remarks><para>
            Setting <b>GridShift</b> also recalculates the <see cref="P:Tektosyne.Geometry.PolygonGrid.CenterDistance"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.EdgeNeighborOffsets"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.Figures"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/>, and <see cref="P:Tektosyne.Geometry.PolygonGrid.VisibilityGraph"/> properties.
            </para><para>
            <b>GridShift</b> is automatically reset to an appropriate default value whenever the
            <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> property changes to a <see cref="T:Tektosyne.Geometry.Polygon"/> that is incompatible
            with the current <b>GridShift</b> value.
            </para><para>
            The following table shows the default <b>GridShift</b> values for all possible <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> shapes:</para>
            <list type="table"><listheader>
            <term>Element</term><description>GridShift</description>
            </listheader><item>
            <term>Square on Edge</term>
            <description><see cref="F:Tektosyne.Geometry.PolygonGridShift.None"/></description>
            </item><item>
            <term>Square on Vertex</term>
            <description><see cref="F:Tektosyne.Geometry.PolygonGridShift.RowRight"/></description>
            </item><item>
            <term>Hexagon on Edge</term>
            <description><see cref="F:Tektosyne.Geometry.PolygonGridShift.ColumnDown"/></description>
            </item><item>
            <term>Hexagon on Vertex</term>
            <description><see cref="F:Tektosyne.Geometry.PolygonGridShift.RowRight"/></description>
            </item></list></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.IsReadOnly">
            <summary>
            Gets a value indicating whether the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> is read-only.</summary>
            <value>
            <c>true</c> if the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> is read-only; otherwise, <c>false</c>. The
            default is <c>false</c>.</value>
            <remarks>
            Attempting to modify a read-only <see cref="T:Tektosyne.Geometry.PolygonGrid"/> will raise a <see cref="T:System.NotSupportedException"/>. Use <see cref="M:Tektosyne.Geometry.PolygonGrid.AsReadOnly"/> to create a read-only
            wrapper around a given <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets">
            <summary>
            Gets a list of all coordinate offsets to reach a neighboring location.</summary>
            <value>
            A jagged <see cref="T:System.Array"/> containing 1 x 4, 2 x 4, 2 x 6, or 2 x 8 <see cref="T:System.Drawing.Point"/> values whose coordinates range from -2 to +2.</value>
            <remarks><para>
            The outer array of <b>NeighborOffsets</b> contains either a single array if <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> is <see cref="F:Tektosyne.Geometry.PolygonGridShift.None"/>, or two arrays for any other
            <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> value. In that case, the first inner array contains offsets for
            left-shifted rows or up-shifted columns, and the second inner array contains offsets for
            right-shifted rows or down-shifted columns.
            </para><para>
            The inner arrays of <b>NeighborOffsets</b> contain the number of index positions 
            indicated by the <see cref="P:Tektosyne.Geometry.PolygonGrid.Connectivity"/> of the current <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>.
            </para><para>
            The array element at index position [<em>i</em>][<em>j</em>] contains the coordinate
            offsets to reach the neighboring location on edge <em>j</em> when the current location
            resides in an odd- or even-numbered row or column, as indicated by <em>i</em>. Counting
            starts at the topmost edge if <see cref="P:Tektosyne.Geometry.Polygon.HasTopIndex"/> is <c>true</c> and with
            the edge to the right of the topmost vertex otherwise, continuing clockwise.
            </para><para>
            If <see cref="P:Tektosyne.Geometry.Polygon.VertexNeighbors"/> is <c>true</c> for the current <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>, the inner arrays instead contain the offsets to the neighboring
            locations on all edges and vertices in an alternating sequence. Counting starts with the
            topmost edge for <see cref="F:Tektosyne.Geometry.PolygonOrientation.OnEdge"/> orientation and with the
            topmost vertex otherwise, continuing clockwise.
            </para><para>
            Use <see cref="M:Tektosyne.Geometry.PolygonGrid.GetNeighborOffsets(System.Drawing.Point)"/> to determine the correct inner array for a given
            location. You may also call the <see cref="M:Tektosyne.Geometry.PolygonGrid.GetNeighbor(System.Drawing.Point,System.Int32)"/> and <see cref="M:Tektosyne.Geometry.PolygonGrid.GetNeighbors(System.Drawing.Point)"/>
            methods to directly find one or more neighbors of a given location.
            </para><para>
            <b>NeighborOffsets</b> is recalculated automatically whenever the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>
            or <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/> properties change.</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.Size">
            <summary>
            Gets or sets the number of rows and columns in the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <value>
            A <see cref="T:System.Drawing.Size"/> value indicating the number of <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> rows and
            columns in the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</value>
            <exception cref="T:System.ArgumentOutOfRangeException">
            The property is set to a <see cref="T:System.Drawing.Size"/> whose <see cref="P:System.Drawing.Size.Width"/> or <see cref="P:System.Drawing.Size.Height"/> is zero or negative.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Geometry.PolygonGrid"/> is read-only.</exception>
            <remarks>
            Setting <b>Size</b> also recalculates the <see cref="P:Tektosyne.Geometry.PolygonGrid.DisplayBounds"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.Figures"/>, and <see cref="P:Tektosyne.Geometry.PolygonGrid.VisibilityGraph"/> properties.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.Connectivity">
            <summary>
            Gets the maximum number of neighbors for any given location.</summary>
            <value>
            The <see cref="P:Tektosyne.Geometry.Polygon.Connectivity"/> of the current <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>.</value>
            <remarks>
            <b>Connectivity</b> also equals the size of an inner array within <see cref="P:Tektosyne.Geometry.PolygonGrid.NeighborOffsets"/>.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.Locations">
            <summary>
            Gets the total number of locations in the <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <value>
            The product of the <see cref="P:System.Drawing.Size.Width"/> and <see cref="P:System.Drawing.Size.Height"/> of the
            current <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/>.</value>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.VisibilityGraph">
            <summary>
            Gets a variant of the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> that is suitable for line-of-sight
            calculations.</summary>
            <value>
            A read-only <see cref="T:Tektosyne.Geometry.PolygonGrid"/> instance that is suitable for line-of-sight
            calculations and otherwise identical to the current instance.</value>
            <remarks><para>
            <b>VisibilityGraph</b> always returns a read-only view of this <see cref="T:Tektosyne.Geometry.PolygonGrid"/>
            object, except when <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> has less than five <see cref="P:Tektosyne.Geometry.Polygon.Sides"/>
            and does not allow <see cref="P:Tektosyne.Geometry.Polygon.VertexNeighbors"/>.
            </para><para>
            In that case, <b>VisibilityGraph</b> returns a read-only view of another <see cref="T:Tektosyne.Geometry.PolygonGrid"/> object whose <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/> does allow <see cref="P:Tektosyne.Geometry.Polygon.VertexNeighbors"/>. The object is buffered until the <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>, <see cref="P:Tektosyne.Geometry.PolygonGrid.GridShift"/>, or <see cref="P:Tektosyne.Geometry.PolygonGrid.Size"/> property changes.
            </para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PolygonGrid.WorldNodeRadius">
            <summary>
            Gets the radius of a graph node in world coordinates.</summary>
            <value>
            The radius of a circle that approximates the world representation of a graph node when
            centered on its <see cref="M:Tektosyne.Geometry.PolygonGrid.GraphToWorld(System.Drawing.Point)"/> coordinates.</value>
            <remarks>
            <b>WorldNodeRadius</b> returns the <see cref="P:Tektosyne.Geometry.Polygon.InnerRadius"/> of the current <see cref="P:Tektosyne.Geometry.PolygonGrid.Element"/>.</remarks>
        </member>
        <member name="T:Tektosyne.Geometry.PolygonGrid.InstanceData">
            <summary>
            Contains the values of most instance properties of a <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            </summary>
            <remarks>
            <b>InstanceData</b> is a simple data container whose fields back most of the instance
            properties of an associated <see cref="T:Tektosyne.Geometry.PolygonGrid"/> object. When a read-only view is
            created, it shares the <b>InstanceData</b> of the original <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            This allows the read-only view to reflect all changes to the original instance.
            </remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.InstanceData.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.PolygonGrid.InstanceData"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.PolygonGrid.InstanceData"/> class with default
            values.</summary>
        </member>
        <member name="M:Tektosyne.Geometry.PolygonGrid.InstanceData.#ctor(Tektosyne.Geometry.PolygonGrid.InstanceData)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.PolygonGrid.InstanceData"/> class that is a shallow
            copy of the specified instance.</summary>
            <param name="data">
            The <see cref="T:Tektosyne.Geometry.PolygonGrid.InstanceData"/> object whose field values should be copied to the new
            instance.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="data"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:Tektosyne.Geometry.PolygonGrid.#ctor(Tektosyne.Geometry.PolygonGrid)"/> for details.</remarks>
        </member>
        <member name="T:Tektosyne.Geometry.GeometryUtility">
            <summary>
            Provides auxiliary methods for geometric types in <b>System.Drawing</b> and
            <b>System.Windows</b>.</summary>
        </member>
        <member name="M:Tektosyne.Geometry.GeometryUtility.Circumscribe(System.Windows.Point[])">
            <overloads>
            Circumscribes a rectangle around the specified coordinates.</overloads>
            <summary>
            Circumscribes a <see cref="T:System.Windows.Rect"/> around the specified <see cref="T:System.Windows.Point"/>
            coordinates.</summary>
            <param name="points">
            An <see cref="T:System.Array"/> containing the <see cref="T:System.Windows.Point"/> coordinates whose bounds to
            determine.</param>
            <returns>
            The smallest <see cref="T:System.Windows.Rect"/> that contains all specified <paramref name="points"/>.
            </returns>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="points"/> is a null reference or an empty array.</exception>
        </member>
        <member name="M:Tektosyne.Geometry.GeometryUtility.Circumscribe(System.Drawing.PointF[])">
            <summary>
            Circumscribes a <see cref="T:System.Drawing.RectangleF"/> around the specified <see cref="T:System.Drawing.PointF"/>
            coordinates.</summary>
            <param name="points">
            An <see cref="T:System.Array"/> containing the <see cref="T:System.Drawing.PointF"/> coordinates whose bounds to
            determine.</param>
            <returns>
            The smallest <see cref="T:System.Drawing.RectangleF"/> that contains all specified <paramref name="points"/>.
            </returns>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="points"/> is a null reference or an empty array.</exception>
        </member>
        <member name="M:Tektosyne.Geometry.GeometryUtility.Circumscribe(System.Drawing.Point[])">
            <summary>
            Circumscribes a <see cref="T:System.Drawing.Rectangle"/> around the specified <see cref="T:System.Drawing.Point"/>
            coordinates.</summary>
            <param name="points">
            An <see cref="T:System.Array"/> containing the <see cref="T:System.Drawing.Point"/> coordinates whose bounds to
            determine.</param>
            <returns>
            The smallest <see cref="T:System.Drawing.Rectangle"/> that contains all specified <paramref name="points"/>.</returns>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="points"/> is a null reference or an empty array.</exception>
        </member>
        <member name="M:Tektosyne.Geometry.GeometryUtility.Circumscribe(System.Windows.Rect)">
            <summary>
            Circumscribes a <see cref="T:System.Drawing.Rectangle"/> around the specified <see cref="T:System.Windows.Rect"/>.</summary>
            <param name="rectangle">
            The <see cref="T:System.Windows.Rect"/> instance to cover.</param>
            <returns>
            A <see cref="T:System.Drawing.Rectangle"/> that entirely covers the specified <paramref name="rectangle"/>.
            </returns>
            <remarks>
            <b>Circumscribe</b> returns a <see cref="T:System.Drawing.Rectangle"/> instance whose <see cref="P:System.Drawing.Rectangle.Location"/> is the <see cref="M:Tektosyne.Fortran.Floor(System.Decimal)"/> and whose <see cref="P:System.Drawing.Rectangle.Size"/> is the <see cref="M:Tektosyne.Fortran.Ceiling(System.Decimal)"/> of the corresponding <paramref name="rectangle"/> components. This ensures that the specified <paramref name="rectangle"/> is entirely covered, assuming its dimensions are positive.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.GeometryUtility.Circumscribe(System.Drawing.RectangleF)">
            <summary>
            Circumscribes a <see cref="T:System.Drawing.Rectangle"/> around the specified <see cref="T:System.Drawing.RectangleF"/>.</summary>
            <param name="rectangle">
            The <see cref="T:System.Drawing.RectangleF"/> instance to cover.</param>
            <returns>
            A <see cref="T:System.Drawing.Rectangle"/> that entirely covers the specified <paramref name="rectangle"/>.
            </returns>
            <remarks><para>
            <b>Circumscribe</b> returns a <see cref="T:System.Drawing.Rectangle"/> instance whose <see cref="P:System.Drawing.Rectangle.Location"/> is the <see cref="M:Tektosyne.Fortran.Floor(System.Decimal)"/> and whose <see cref="P:System.Drawing.Rectangle.Size"/> is the <see cref="M:Tektosyne.Fortran.Ceiling(System.Decimal)"/> of the corresponding <paramref name="rectangle"/> components. This ensures that the specified <paramref name="rectangle"/> is entirely covered, assuming its dimensions are positive.
            </para><para>
            The <see cref="T:System.Drawing.Rectangle"/> structure already contains several methods to convert from <see cref="T:System.Drawing.RectangleF"/> instances, but they apply the same rounding direction to all components.
            This risks missing a row or column of pixels at one or more borders.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.GeometryUtility.Round(System.Windows.Point)">
            <summary>
            Converts the specified <see cref="T:System.Windows.Point"/> to a <see cref="T:System.Drawing.Point"/> by rounding both
            coordinates to the nearest integer.</summary>
            <param name="point">
            The <see cref="T:System.Windows.Point"/> instance to convert.</param>
            <returns>
            A <see cref="T:System.Drawing.Point"/> instance whose coordinates equal those of the specified <paramref name="point"/>, rounded to the nearest integer using <see cref="M:Tektosyne.Fortran.NInt(System.Decimal)"/>.
            </returns>
        </member>
        <member name="M:Tektosyne.Geometry.GeometryUtility.Round(System.Windows.Rect)">
            <summary>
            Converts the specified <see cref="T:System.Windows.Rect"/> to a <see cref="T:System.Drawing.Rectangle"/> by rounding both
            coordinates and dimensions to the nearest integer.</summary>
            <param name="rect">
            The <see cref="T:System.Windows.Rect"/> instance to convert.</param>
            <returns>
            A <see cref="T:System.Drawing.Rectangle"/> instance whose coordinates and dimensions equal those of the
            specified <paramref name="rect"/>, rounded to the nearest integer using <see cref="M:Tektosyne.Fortran.NInt(System.Decimal)"/>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.GeometryUtility.Round(System.Windows.Size)">
            <summary>
            Converts the specified <see cref="T:System.Windows.Size"/> to a <see cref="T:System.Drawing.Size"/> by rounding both
            coordinates to the nearest integer.</summary>
            <param name="size">
            The <see cref="T:System.Windows.Size"/> instance to convert.</param>
            <returns>
            A <see cref="T:System.Drawing.Size"/> instance whose dimensions equal those of the specified <paramref name="size"/>, rounded to the nearest integer using <see cref="M:Tektosyne.Fortran.NInt(System.Decimal)"/>.
            </returns>
        </member>
        <member name="M:Tektosyne.Geometry.GeometryUtility.ToInt32Rect(System.Drawing.Rectangle)">
            <summary>
            Converts the specified <see cref="T:System.Drawing.Rectangle"/> to an <see cref="T:System.Windows.Int32Rect"/>.</summary>
            <param name="rect">
            The <see cref="T:System.Drawing.Rectangle"/> instance to convert.</param>
            <returns>
            A new <see cref="T:System.Windows.Int32Rect"/> instance whose coordinates and dimensions equal those of
            the specified <paramref name="rect"/>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.GeometryUtility.ToPoint(System.Drawing.Point)">
            <summary>
            Converts the specified <see cref="T:System.Drawing.Point"/> to a <see cref="T:System.Windows.Point"/>.</summary>
            <param name="point">
            The <see cref="T:System.Drawing.Point"/> instance to convert.</param>
            <returns>
            A new <see cref="T:System.Windows.Point"/> instance whose coordinates equal those of the specified
            <paramref name="point"/>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.GeometryUtility.ToRect(System.Windows.Int32Rect)">
            <overloads>
            Converts the specified rectangle with <see cref="T:System.Int32"/> coordinates to a <see cref="T:System.Windows.Rect"/>.</overloads>
            <summary>
            Converts the specified <see cref="T:System.Windows.Int32Rect"/> to a <see cref="T:System.Windows.Rect"/>.</summary>
            <param name="rect">
            The <see cref="T:System.Windows.Int32Rect"/> instance to convert.</param>
            <returns>
            A new <see cref="T:System.Windows.Rect"/> instance whose coordinates and dimensions equal those of the
            specified <paramref name="rect"/>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.GeometryUtility.ToRect(System.Drawing.Rectangle)">
            <summary>
            Converts the specified <see cref="T:System.Drawing.Rectangle"/> to a <see cref="T:System.Windows.Rect"/>.</summary>
            <param name="rect">
            The <see cref="T:System.Drawing.Rectangle"/> instance to convert.</param>
            <returns>
            A new <see cref="T:System.Windows.Rect"/> instance whose coordinates and dimensions equal those of the
            specified <paramref name="rect"/>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.GeometryUtility.ToRectI(System.Windows.Int32Rect)">
            <summary>
            Converts the specified <see cref="T:System.Windows.Int32Rect"/> to a <see cref="T:System.Drawing.Rectangle"/>.</summary>
            <param name="rect">
            The <see cref="T:System.Windows.Int32Rect"/> instance to convert.</param>
            <returns>
            A new <see cref="T:System.Drawing.Rectangle"/> instance whose coordinates and dimensions equal those of the
            specified <paramref name="rect"/>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.GeometryUtility.ToSize(System.Drawing.Size)">
            <summary>
            Converts the specified <see cref="T:System.Drawing.Size"/> to a <see cref="T:System.Windows.Size"/>.</summary>
            <param name="size">
            The <see cref="T:System.Drawing.Size"/> instance to convert.</param>
            <returns>
            A new <see cref="T:System.Windows.Size"/> instance whose dimensions equal those of the specified
            <paramref name="size"/>.</returns>
        </member>
        <member name="T:Tektosyne.Collections.Sorting">
            <summary>
            Provides sorting algorithms for <see cref="T:System.Collections.Generic.IList`1"/> collections.</summary>
            <remarks><para>
            <b>Sorting</b> provides a variety of standard sorting algorithms that operate on any <see cref="T:System.Collections.Generic.IList`1"/> collection. The implementations are based on Robert Sedgewick, "Algorithms
            in Java" (3rd ed.), Addison-Wesley 2003.
            </para><para>
            All <b>Sorting</b> algorithms return immediately if the specified collection contains less
            than two elements. The relatively complex algorithms <see cref="M:Tektosyne.Collections.Sorting.HeapSort``1(System.Collections.Generic.IList{``0})"/>, <see cref="M:Tektosyne.Collections.Sorting.QuickSort``1(System.Collections.Generic.IList{``0})"/>, and <see cref="M:Tektosyne.Collections.Sorting.BestQuickSort``1(System.Collections.Generic.IList{``0})"/> also defer collections
            with exactly two elements to the <see cref="M:Tektosyne.Collections.CollectionsUtility.ConditionalSwap``1(System.Collections.Generic.IList{``0},System.Comparison{``0},System.Int32,System.Int32)"/> method,
            and use an optimal algorithm for collections with exactly three elements.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.Sorting.HeapSortSink``1(System.Collections.Generic.IList{``0},System.Comparison{``0},System.Int32,System.Int32)">
            <summary>
            Fixes a heap for <see cref="M:Tektosyne.Collections.Sorting.HeapSort``1(System.Collections.Generic.IList{``0})"/> by sinking the specified element in the
            specified <see cref="T:System.Collections.Generic.IList`1"/> collection.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection to sort.</param>
            <param name="comparison">
            The <see cref="T:System.Comparison`1"/> method that defines the sorting order.</param>
            <param name="k">
            The one-based index of the <paramref name="list"/> element to sink.</param>
            <param name="n">
            The greatest one-based index in <paramref name="list"/> to compare against.</param>
            <remarks>
            <see cref="M:Tektosyne.Collections.Sorting.HeapSort``1(System.Collections.Generic.IList{``0})"/> internally uses one-based indices which must be adjusted to
            zero-based indices whenever <paramref name="list"/> elements are retrieved.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.Sorting.QuickSortRange``1(System.Collections.Generic.IList{``0},System.Comparison{``0},System.Int32,System.Int32)">
            <summary>
            Sorts the specified subrange of the specified <see cref="T:System.Collections.Generic.IList`1"/> collection, using
            the Quicksort algorithm and the specified <see cref="T:System.Comparison`1"/> method.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection to sort.</param>
            <param name="comparison">
            The <see cref="T:System.Comparison`1"/> method that defines the sorting order.</param>
            <param name="l">
            The zero-based index of the first <paramref name="list"/> element to sort.</param>
            <param name="r">
            The zero-based index of the last <paramref name="list"/> element to sort.</param>
            <remarks>
            <b>QuickSortRange</b> implements partitioning and recursive partition sorting for <see cref="M:Tektosyne.Collections.Sorting.QuickSort``1(System.Collections.Generic.IList{``0})"/>. The range between the specified <paramref name="l"/> and
            <paramref name="r"/> indices must contain at least two elements, although our
            implementation ensures that the range contains at least four elements.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.Sorting.TripleSort``1(System.Collections.Generic.IList{``0},System.Comparison{``0},System.Int32)">
            <summary>
            Sorts three elements in the specified <see cref="T:System.Collections.Generic.IList`1"/> collection, starting at the
            specified index and using the specified <see cref="T:System.Comparison`1"/> method.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection to sort.</param>
            <param name="comparison">
            The <see cref="T:System.Comparison`1"/> method that defines the sorting order.</param>
            <param name="i">
            The zero-based index of the first <paramref name="list"/> element to sort.</param>
            <remarks>
            <b>TripleSort</b> sorts the three <paramref name="list"/> elements starting at index
            position <paramref name="i"/> using two or at most three comparisons. This method is
            also called by <see cref="M:Tektosyne.Collections.Sorting.QuickSortRange``1(System.Collections.Generic.IList{``0},System.Comparison{``0},System.Int32,System.Int32)"/> for subranges of exactly three elements.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.Sorting.BestQuickSort``1(System.Collections.Generic.IList{``0})">
            <overloads>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the best Quicksort algorithm
            available for its concrete type.</overloads>
            <summary>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the best Quicksort algorithm
            available for its concrete type.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection to sort.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <remarks>
            This method calls the <see cref="M:Tektosyne.Collections.Sorting.BestQuickSort``1(System.Collections.Generic.IList{``0},System.Comparison{``0})"/> overload
            that also takes a <see cref="T:System.Comparison`1"/> argument, specifying a null reference for
            the second argument. Please see there for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.Sorting.BestQuickSort``1(System.Collections.Generic.IList{``0},System.Comparison{``0})">
            <summary>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the best Quicksort algorithm 
            available for its concrete type, and the specified <see cref="T:System.Comparison`1"/> method.
            </summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection to sort.</param>
            <param name="comparison">
            The <see cref="T:System.Comparison`1"/> method that defines the sorting order. This argument may
            be a null reference.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <remarks><para>
            <b>BestQuickSort</b> sorts the specified <paramref name="list"/> using the Quicksort
            algorithm. This algorithm is unstable; that is, the relative order of any two elements
            for which the specified <paramref name="comparison"/> returns zero may change randomly.
            </para><para>
            <b>BestQuickSort</b> selects the fastest Quicksort algorithm that is available for the
            concrete type of the specified <paramref name="list"/>, as follows:
            </para><list type="number"><item>
            If <paramref name="list"/> is an <see cref="T:System.Array"/>, use the <see cref="M:System.Array.Sort``1(``0[])"/> method of the <see cref="T:System.Array"/> class.
            </item><item>
            If <paramref name="list"/> is a standard <see cref="T:System.Collections.Generic.List`1"/>, use the <see cref="M:System.Collections.Generic.List`1.Sort"/> method of the <see cref="T:System.Collections.Generic.List`1"/> class.
            </item><item>
            If <paramref name="list"/> is a <see cref="T:Tektosyne.Collections.ListEx`1"/>, use the <see cref="M:Tektosyne.Collections.ListEx`1.Sort"/> method of the <see cref="T:Tektosyne.Collections.ListEx`1"/> class.
            </item><item>
            Otherwise, use the <see cref="M:Tektosyne.Collections.Sorting.QuickSort``1(System.Collections.Generic.IList{``0})"/> method.
            </item></list><para>
            If <paramref name="comparison"/> is a null reference, <b>BestQuickSort</b> uses the <see cref="M:System.Collections.Generic.Comparer`1.Compare(`0,`0)"/> method provided by the <see cref="P:System.Collections.Generic.Comparer`1.Default"/>
            comparer for the specified type <typeparamref name="T"/> instead.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.Sorting.HeapSort``1(System.Collections.Generic.IList{``0})">
            <overloads>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the Heapsort algorithm.
            </overloads>
            <summary>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the Heapsort algorithm.
            </summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection to sort.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <remarks>
            This method calls the <see cref="M:Tektosyne.Collections.Sorting.HeapSort``1(System.Collections.Generic.IList{``0},System.Comparison{``0})"/> overload that
            also takes a <see cref="T:System.Comparison`1"/> argument, specifying a null reference for the
            second argument. Please see there for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.Sorting.HeapSort``1(System.Collections.Generic.IList{``0},System.Comparison{``0})">
            <summary>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the Heapsort algorithm and
            the specified <see cref="T:System.Comparison`1"/> method.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection to sort.</param>
            <param name="comparison">
            The <see cref="T:System.Comparison`1"/> method that defines the sorting order. This argument may
            be a null reference.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <remarks><para>
            <b>HeapSort</b> sorts the specified <paramref name="list"/> using the Heapsort
            algorithm. Like the Quicksort algorithm provided by the <see cref="T:System.Collections.Generic.List`1"/> class,
            this is an unstable algorithm. That is, the relative order of any two elements for which
            the specified <paramref name="comparison"/> returns zero may change randomly.
            </para><para>
            If <paramref name="comparison"/> is a null reference, <b>HeapSort</b> uses the <see cref="M:System.Collections.Generic.Comparer`1.Compare(`0,`0)"/> method provided by the <see cref="P:System.Collections.Generic.Comparer`1.Default"/>
            comparer for the specified type <typeparamref name="T"/> instead.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.Sorting.InsertionSort``1(System.Collections.Generic.IList{``0})">
            <overloads>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the insertion sort
            algorithm.</overloads>
            <summary>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the insertion sort
            algorithm.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection to sort.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <remarks>
            This method calls the <see cref="M:Tektosyne.Collections.Sorting.InsertionSort``1(System.Collections.Generic.IList{``0},System.Comparison{``0})"/> overload
            that also takes a <see cref="T:System.Comparison`1"/> argument, specifying a null reference for
            the second argument. Please see there for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.Sorting.InsertionSort``1(System.Collections.Generic.IList{``0},System.Comparison{``0})">
            <summary>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the insertion sort algorithm
            and the specified <see cref="T:System.Comparison`1"/> method.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection to sort.</param>
            <param name="comparison">
            The <see cref="T:System.Comparison`1"/> method that defines the sorting order. This argument may
            be a null reference.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <remarks><para>
            <b>InsertionSort</b> sorts the specified <paramref name="list"/> using the insertion
            sort algorithm. Unlike the Quicksort algorithm provided by the <see cref="T:System.Collections.Generic.List`1"/>
            class, this is a stable algorithm. That is, the relative order of any two elements for
            which the specified <paramref name="comparison"/> returns zero remains unchanged.
            </para><para>
            If <paramref name="comparison"/> is a null reference, <b>InsertionSort</b> uses the <see cref="M:System.Collections.Generic.Comparer`1.Compare(`0,`0)"/> method provided by the <see cref="P:System.Collections.Generic.Comparer`1.Default"/>
            comparer for the specified type <typeparamref name="T"/> instead.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.Sorting.QuickSort``1(System.Collections.Generic.IList{``0})">
            <overloads>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the Quicksort algorithm.
            </overloads>
            <summary>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the Quicksort algorithm.
            </summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection to sort.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <remarks>
            This method calls the <see cref="M:Tektosyne.Collections.Sorting.QuickSort``1(System.Collections.Generic.IList{``0},System.Comparison{``0})"/> overload that
            also takes a <see cref="T:System.Comparison`1"/> argument, specifying a null reference for the
            second argument. Please see there for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.Sorting.QuickSort``1(System.Collections.Generic.IList{``0},System.Comparison{``0})">
            <summary>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the Quicksort algorithm and
            the specified <see cref="T:System.Comparison`1"/> method.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection to sort.</param>
            <param name="comparison">
            The <see cref="T:System.Comparison`1"/> method that defines the sorting order. This argument may
            be a null reference.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <remarks><para>
            <b>QuickSort</b> sorts the specified <paramref name="list"/> using the Quicksort
            algorithm. This algorithm is unstable; that is, the relative order of any two elements
            for which the specified <paramref name="comparison"/> returns zero may change randomly.
            </para><para>
            The standard library already provides a Quicksort algorithm, but only for <see cref="T:System.Collections.Generic.List`1"/> and <see cref="T:System.Array"/> instances, whereas <b>QuickSort</b> can operate
            on arbitrary <see cref="T:System.Collections.Generic.IList`1"/> collections.
            </para><para>
            If <paramref name="comparison"/> is a null reference, <b>QuickSort</b> uses the <see cref="M:System.Collections.Generic.Comparer`1.Compare(`0,`0)"/> method provided by the <see cref="P:System.Collections.Generic.Comparer`1.Default"/>
            comparer for the specified type <typeparamref name="T"/> instead.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.Sorting.ShellSort``1(System.Collections.Generic.IList{``0})">
            <overloads>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the Shellsort algorithm.
            </overloads>
            <summary>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the Shellsort algorithm.
            </summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection to sort.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <remarks>
            This method calls the <see cref="M:Tektosyne.Collections.Sorting.ShellSort``1(System.Collections.Generic.IList{``0},System.Comparison{``0})"/> overload that
            also takes a <see cref="T:System.Comparison`1"/> argument, specifying a null reference for the
            second argument. Please see there for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.Sorting.ShellSort``1(System.Collections.Generic.IList{``0},System.Comparison{``0})">
            <summary>
            Sorts the specified <see cref="T:System.Collections.Generic.IList`1"/> collection using the Shellsort algorithm and
            the specified <see cref="T:System.Comparison`1"/> method.</summary>
            <typeparam name="T">
            The type of all elements in the collection.</typeparam>
            <param name="list">
            The <see cref="T:System.Collections.Generic.IList`1"/> collection to sort.</param>
            <param name="comparison">
            The <see cref="T:System.Comparison`1"/> method that defines the sorting order. This argument may
            be a null reference.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <remarks><para>
            <b>ShellSort</b> sorts the specified <paramref name="list"/> using the Shellsort
            algorithm. Unlike the Quicksort algorithm provided by the <see cref="T:System.Collections.Generic.List`1"/> class,
            this is a stable algorithm. That is, the relative order of any two elements for which
            the specified <paramref name="comparison"/> returns zero remains unchanged.
            </para><para>
            If <paramref name="comparison"/> is a null reference, <b>ShellSort</b> uses the <see cref="M:System.Collections.Generic.Comparer`1.Compare(`0,`0)"/> method provided by the <see cref="P:System.Collections.Generic.Comparer`1.Default"/>
            comparer for the specified type <typeparamref name="T"/> instead.</para></remarks>
        </member>
        <member name="T:Tektosyne.Collections.SortedDictionaryEx`2">
            <summary>
            Provides a generic collection of keys and values that are sorted and accessible by key.
            </summary>
            <typeparam name="TKey">
            The type of all keys in the collection. Keys cannot be null references.</typeparam>
            <typeparam name="TValue">
            The type of all values that are associated with the keys. If <typeparamref name="TValue"/>
            is a reference type, values may be null references.</typeparam>
            <remarks><para>
            <b>SortedDictionaryEx</b> provides a <see cref="T:System.Collections.Generic.SortedDictionary`2"/> with a few
            extra features:
            </para><list type="bullet"><item>
            The <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> property of any <typeparamref name="TValue"/> that
            implements the <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> interface is automatically checked against
            the associated dictionary key when a key or value is changed or inserted.
            </item><item>
            <see cref="M:Tektosyne.Collections.SortedDictionaryEx`2.AsReadOnly"/> returns a read-only wrapper that
            has the same public type as the original collection. Attempting to modify the collection
            through such a read-only view will raise a <see cref="T:System.NotSupportedException"/>.
            </item><item>
            <see cref="M:Tektosyne.Collections.SortedDictionaryEx`2.Copy"/> creates a deep copy of the collection by
            invoking <see cref="M:System.ICloneable.Clone"/> on each value. This feature requires that all copied
            values implement the <see cref="T:System.ICloneable"/> interface.
            </item><item>
            <see cref="F:Tektosyne.Collections.SortedDictionaryEx`2.Empty"/> returns an immutable empty collection
            that is cached for repeated access.
            </item><item>
            <see cref="M:Tektosyne.Collections.SortedDictionaryEx`2.Equals(System.Collections.Generic.ICollection{System.Collections.Generic.KeyValuePair{`0,`1}})"/> compares two collections with
            identical element types for value equality of all elements. The collections compare as equal
            if they contain the same elements in the same order.
            </item></list><para>
            Moreover, several properties and methods that the standard class provides as explicit
            interface implementations have been elevated to public visibility.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> class.
            </overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> class
            that is empty and uses the default comparer for <typeparamref name="TKey"/>.</summary>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedDictionary`2.#ctor"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.#ctor(System.Collections.Generic.IComparer{`0})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> class
            that is empty and uses the specified comparer for <typeparamref name="TKey"/>.</summary>
            <param name="comparer">
            The <see cref="T:System.Collections.Generic.IComparer`1"/> to use when comparing keys, or a null reference to use
            the default <see cref="T:System.Collections.Generic.Comparer`1"/> for <typeparamref name="TKey"/>.</param>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedDictionary`2.#ctor(System.Collections.Generic.IComparer{`0})"/> for
            details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.#ctor(System.Collections.Generic.IDictionary{`0,`1})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> class
            that contains elements copied from the specified collection and uses the default
            comparer for <typeparamref name="TKey"/>.</summary>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> whose elements are copied to the new
            collection.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="dictionary"/> contains one or more duplicate keys.</exception>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="dictionary"/> is a null reference.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> is a null reference. </para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedDictionary`2.#ctor(System.Collections.Generic.IDictionary{`0,`1})"/>
            for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.#ctor(System.Collections.Generic.IDictionary{`0,`1},System.Collections.Generic.IComparer{`0})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> class
            that contains elements copied from the specified collection and uses the specified
            comparer for <typeparamref name="TKey"/>.</summary>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> whose elements are copied to the new
            collection.</param>
            <param name="comparer">
            The <see cref="T:System.Collections.Generic.IComparer`1"/> to use when comparing keys, or a null reference to use
            the default <see cref="T:System.Collections.Generic.Comparer`1"/> for <typeparamref name="TKey"/>.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="dictionary"/> contains one or more duplicate keys.</exception>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="dictionary"/> is a null reference.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> is a null reference. </para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedDictionary`2.#ctor(System.Collections.Generic.IDictionary{`0,`1},System.Collections.Generic.IComparer{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.#ctor(Tektosyne.Collections.SortedDictionaryEx{`0,`1},System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> class
            that is a read-only view of the specified instance.</summary>
            <param name="dictionary">
            The <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> collection that provides the initial
            value for the <see cref="F:Tektosyne.Collections.SortedDictionaryEx`2.InnerDictionary"/> field.</param>
            <param name="readOnly">
            The initial value for the <see cref="F:Tektosyne.Collections.SortedDictionaryEx`2.ReadOnlyFlag"/> field. This argument must be
            <c>true</c>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="dictionary"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="readOnly"/> is <c>false</c>.</exception>
            <remarks>
            This constructor is used to create a read-only wrapper around an existing collection.
            The new instance shares the data of the specified <paramref name="dictionary"/>.
            </remarks>
        </member>
        <member name="F:Tektosyne.Collections.SortedDictionaryEx`2.InnerDictionary">
            <summary>
            The <see cref="T:System.Collections.Generic.SortedDictionary`2"/> collection that holds the <typeparamref name="TKey"/> keys and <typeparamref name="TValue"/> values of the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
        </member>
        <member name="F:Tektosyne.Collections.SortedDictionaryEx`2.ReadOnlyFlag">
            <summary>
            Backs the <see cref="P:Tektosyne.Collections.SortedDictionaryEx`2.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.SortedDictionaryEx`2.IsReadOnly"/> properties.</summary>
        </member>
        <member name="F:Tektosyne.Collections.SortedDictionaryEx`2.ReadOnlyWrapper">
            <summary>
            The read-only <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> collection that is returned
            by the <see cref="M:Tektosyne.Collections.SortedDictionaryEx`2.AsReadOnly"/> method.</summary>
        </member>
        <member name="F:Tektosyne.Collections.SortedDictionaryEx`2.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <remarks>
            Attempting to modify the <b>Empty</b> collection will raise a <see cref="T:System.NotSupportedException"/>. The collection has zero capacity and is guaranteed to
            never change, as there are no writable references to the collection.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.CheckDictionary(System.Collections.Generic.IDictionary{`0,`1})">
            <summary>
            Checks that the specified <see cref="T:System.Collections.Generic.IDictionary`2"/> is valid.</summary>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> to check.</param>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="dictionary"/> is a null reference.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> is a null reference. </para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/>.</exception>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.CheckWritable">
            <summary>
            Checks that the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> can be modified.
            </summary>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is read-only.</exception>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.Add(`0,`1)">
            <overloads>
            Adds the specified element to the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.
            </overloads>
            <summary>
            Adds the specified key and value to the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.
            </summary>
            <param name="key">
            The key of the element to add.</param>
            <param name="value">
            The value of the element to add.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="key"/> already exists in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</exception>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from <paramref name="key"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedDictionary`2.Add(`0,`1)"/> for
            details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.System#Collections#IDictionary#Add(System.Object,System.Object)">
            <summary>
            Adds the specified key and value to the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.
            </summary>
            <param name="key">
            The key of the element to add. This argument must be compatible with <typeparamref name="TKey"/>.</param>
            <param name="value">
            The value of the element to add. This argument must be compatible with <typeparamref name="TValue"/>.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="key"/> already exists in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</exception>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.InvalidCastException"><para>
            <paramref name="key"/> is not compatible with <typeparamref name="TKey"/>.
            </para><para>-or-</para><para>
            <paramref name="value"/> is not compatible with <typeparamref name="TValue"/>.
            </para></exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is read-only.</exception>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.Add(System.Collections.Generic.KeyValuePair{`0,`1})">
            <summary>
            Adds the specified key-and-value pair to the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <param name="pair">
            The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> element to add.</param>
            <exception cref="T:System.ArgumentException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component of <paramref name="pair"/>
            already exists in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</exception>
            <exception cref="T:System.ArgumentNullException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component of <paramref name="pair"/> is
            a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> component of <paramref name="pair"/>
            is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/>
            differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component.
            </exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.ICollection`1.Add(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.AddRange(System.Collections.Generic.IDictionary{`0,`1})">
            <summary>
            Adds the elements of the specified collection to the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>. </summary>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> whose elements to add.</param>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="dictionary"/> is a null reference.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> is a null reference. </para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/>.</exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> already contains one or more keys in
            the specified <paramref name="dictionary"/>.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains one or more duplicate keys.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.AddRange(System.Collections.Generic.IEnumerable{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.AsReadOnly">
            <summary>
            Returns a read-only view of the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.
            </summary>
            <returns>
            A read-only wrapper around the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</returns>
            <remarks><para>
            Attempting to modify the read-only wrapper returned by <b>AsReadOnly</b> will raise a
            <see cref="T:System.NotSupportedException"/>. Note that the original collection may still change,
            and any such changes will be reflected in the read-only view.
            </para><para>
            <b>AsReadOnly</b> buffers the newly created read-only wrapper when the method is first
            called, and returns the buffered value on subsequent calls.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.Clear">
            <summary>
            Removes all elements from the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedDictionary`2.Clear"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.Clone">
            <summary>
            Creates a shallow copy of the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <returns>
            A shallow copy of the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</returns>
            <remarks>
            <b>Clone</b> does not preserve the values of the <see cref="P:Tektosyne.Collections.SortedDictionaryEx`2.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.SortedDictionaryEx`2.IsReadOnly"/> properties.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.Contains(System.Collections.Generic.KeyValuePair{`0,`1})">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> contains the
            specified key-and-value pair.</summary>
            <param name="pair">
            The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> element to locate.</param>
            <returns>
            <c>true</c> if <paramref name="pair"/> is found in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.ICollection`1.Contains(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.ContainsKey(`0)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> contains the
            specified key.</summary>
            <param name="key">
            The key to locate.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> contains an element
            with the specified <paramref name="key"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedDictionary`2.ContainsKey(`0)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.System#Collections#IDictionary#Contains(System.Object)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> contains the specified
            key.</summary>
            <param name="key">
            The key to locate. This argument must be compatible with <typeparamref name="TKey"/>.
            </param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> contains an element with the
            specified <paramref name="key"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.InvalidCastException">
            <paramref name="key"/> is not compatible with <typeparamref name="TKey"/>.</exception>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.ContainsValue(`1)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> contains the
            specified value.</summary>
            <param name="value">
            The value to locate.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> contains an element
            with the specified <paramref name="value"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedDictionary`2.ContainsValue(`1)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.Copy">
            <summary>
            Creates a deep copy of the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <returns>
            A deep copy of the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</returns>
            <exception cref="T:System.InvalidCastException">
            <typeparamref name="T"/> does not implement <see cref="T:System.ICloneable"/>.</exception>
            <remarks><para>
            <b>Copy</b> is similar to <see cref="M:Tektosyne.Collections.SortedDictionaryEx`2.Clone"/> but creates a deep copy the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> by invoking <see cref="M:System.ICloneable.Clone"/> on 
            all <typeparamref name="TValue"/> values. The <typeparamref name="TKey"/> keys are
            always duplicated by a shallow copy.
            </para><para>
            <b>Copy</b> does not preserve the values of the <see cref="P:Tektosyne.Collections.SortedDictionaryEx`2.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.SortedDictionaryEx`2.IsReadOnly"/> properties.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32)">
            <summary>
            Copies the entire <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> to a one-dimensional
            <see cref="T:System.Array"/>, starting at the specified index of the target array.</summary>
            <param name="array">
            The one-dimensional <see cref="T:System.Array"/> that is the destination of the <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements copied from the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>. The <b>Array</b> must have zero-based
            indexing.</param>
            <param name="arrayIndex">
            The zero-based index in <paramref name="array"/> at which copying begins.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="array"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="arrayIndex"/> is less than zero.</exception>
            <exception cref="T:System.ArgumentException"><para>
            <paramref name="arrayIndex"/> is equal to or greater than the length of <paramref name="array"/>.
            </para><para>-or-</para><para>
            The number of elements in the source <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is
            greater than the available space from <paramref name="arrayIndex"/> to the end of the
            destination <paramref name="array"/>.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedDictionary`2.CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.System#Collections#ICollection#CopyTo(System.Array,System.Int32)">
            <summary>
            Copies the entire <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> to a one-dimensional
            <see cref="T:System.Array"/>, starting at the specified index of the target array.</summary>
            <param name="array">
            The one-dimensional <see cref="T:System.Array"/> that is the destination of the <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements copied from the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>. The <b>Array</b> must have zero-based
            indexing.</param>
            <param name="arrayIndex">
            The zero-based index in <paramref name="array"/> at which copying begins.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="array"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="arrayIndex"/> is less than zero.</exception>
            <exception cref="T:System.ArgumentException"><para>
            <paramref name="array"/> is multidimensional.
            </para><para>-or-</para><para>
            <paramref name="arrayIndex"/> is equal to or greater than the length of <paramref name="array"/>.
            </para><para>-or-</para><para>
            The number of elements in the source <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is
            greater than the available space from <paramref name="arrayIndex"/> to the end of the
            destination <paramref name="array"/>.</para></exception>
            <exception cref="T:System.InvalidCastException">
            <see cref="T:System.Collections.Generic.KeyValuePair`2"/> cannot be cast automatically to the type of the
            destination <paramref name="array"/>.</exception>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.Equals(System.Collections.Generic.ICollection{System.Collections.Generic.KeyValuePair{`0,`1}})">
            <summary>
            Determines whether the specified collection contains the same key-and-value pairs in the
            same order as the current <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <param name="collection">
            The <see cref="T:System.Collections.Generic.ICollection`1"/> of <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements to
            compare with the current <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</param>
            <returns><para>
            <c>true</c> under the following conditions, otherwise <c>false</c>:
            </para><list type="bullet"><item>
            <paramref name="collection"/> is another reference to this <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.
            </item><item>
            <paramref name="collection"/> is not a null reference, contains the same number of
            elements as this <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>, and all elements
            compare as equal when retrieved in the enumeration sequence for each collection.
            </item></list></returns>
            <remarks>
            <b>Equals</b> calls <see cref="M:Tektosyne.Collections.CollectionsUtility.SequenceEqual``1(System.Collections.Generic.ICollection{``0},System.Collections.Generic.ICollection{``0})"/> to test the two
            collections for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.GetEnumerator">
            <summary>
            Returns a <see cref="T:System.Collections.Generic.SortedDictionary`2.Enumerator"/> that can iterate
            through the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <returns>
            A <see cref="T:System.Collections.Generic.SortedDictionary`2.Enumerator"/> for the entire <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>. Each enumerated item is a <see cref="T:System.Collections.Generic.KeyValuePair`2"/>.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedDictionary`2.GetEnumerator"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.System#Collections#Generic#IEnumerable{System#Collections#Generic#KeyValuePair{TKey@TValue}}#GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can iterate through the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <returns>
            An <see cref="T:System.Collections.Generic.IEnumerator`1"/> for the entire <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>. Each enumerated item is a <see cref="T:System.Collections.Generic.KeyValuePair`2"/>.
            </returns>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.System#Collections#IDictionary#GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.IDictionaryEnumerator"/> that can iterate through the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <returns>
            An <see cref="T:System.Collections.IDictionaryEnumerator"/> for the entire <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>. Each enumerated item is a <see cref="T:System.Collections.Generic.KeyValuePair`2"/>.</returns>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.IEnumerator"/> that can iterate through the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> for the entire <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>. Each enumerated item is a <see cref="T:System.Collections.Generic.KeyValuePair`2"/>.
            </returns>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.Remove(`0)">
            <overloads>
            Removes the specified element from the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.
            </overloads>
            <summary>
            Removes the element with the specified key from the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <param name="key">
            The key of the element to remove.</param>
            <returns>
            <c>true</c> if <paramref name="key"/> was found and the associated element was removed;
            otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedDictionary`2.Remove(`0)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.System#Collections#IDictionary#Remove(System.Object)">
            <summary>
            Removes the element with the specified key from the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <param name="key">
            The key of the element to remove. This argument must be compatible with <typeparamref name="TKey"/>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.InvalidCastException">
            <paramref name="key"/> is not compatible with <typeparamref name="TKey"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is read-only.</exception>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.Remove(System.Collections.Generic.KeyValuePair{`0,`1})">
            <summary>
            Removes the specified key-and-value pair from the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <param name="pair">
            The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> element to remove.</param>
            <returns>
            <c>true</c> if <paramref name="pair"/> was found and removed; otherwise, <c>false</c>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component of <paramref name="pair"/> is
            a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> component of <paramref name="pair"/>
            is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/>
            differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component.
            </exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.ICollection`1.Remove(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.ToArray">
            <summary>
            Copies the key-and-value pairs of the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> to
            a new <see cref="T:System.Array"/>.</summary>
            <returns>
            A one-dimensional <see cref="T:System.Array"/> containing copies of the <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements of the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</returns>
            <remarks>
            <b>ToArray</b> has the same effect as <see cref="M:Tektosyne.Collections.SortedDictionaryEx`2.CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32)"/> with a starting index of
            zero, but also allocates the target array.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.SortedDictionaryEx`2.TryGetValue(`0,`1@)">
            <summary>
            Gets the value associated with the specified key.</summary>
            <param name="key">
            The key whose value to get.</param>
            <param name="value">
            The value associated with the first occurrence of <paramref name="key"/>, if found;
            otherwise, the default value for <typeparamref name="TValue"/>.</param>
            <returns>
            <c>true</c> if <paramref name="key"/> was found; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedDictionary`2.TryGetValue(`0,`1@)"/> for details.
            </remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedDictionaryEx`2.Comparer">
            <summary>
            Gets the <see cref="T:System.Collections.Generic.IComparer`1"/> that is used to determine the relative order of
            keys in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <value>
            The <see cref="T:System.Collections.Generic.IComparer`1"/> instance that is used to order keys.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedDictionary`2.Comparer"/> for details.
            </remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedDictionaryEx`2.Count">
            <summary>
            Gets the number of key-and-value pairs contained in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <value>
            The number of <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements contained in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedDictionary`2.Count"/> for details.
            </remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedDictionaryEx`2.IsFixedSize">
            <summary>
            Gets a value indicating whether the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> has a
            fixed size.</summary>
            <value>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> has a fixed size;
            otherwise, <c>false</c>. The default is <c>false</c>.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.IDictionary.IsFixedSize"/> for details.
            </para><para>
            This property always returns the same value as the <see cref="P:Tektosyne.Collections.SortedDictionaryEx`2.IsReadOnly"/> property,
            as none of the <b>Tektosyne.Collections</b> classes support writeable collections with
            a fixed size.</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedDictionaryEx`2.IsReadOnly">
            <summary>
            Gets a value indicating whether the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is
            read-only.</summary>
            <value>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is read-only;
            otherwise, <c>false</c>. The default is <c>false</c>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.IDictionary.IsReadOnly"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedDictionaryEx`2.IsSynchronized">
            <summary>
            Gets a value indicating whether access to the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is synchronized (thread-safe).</summary>
            <value>
            <c>true</c> if access to the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is
            synchronized (thread-safe); otherwise, <c>false</c>. The default is <c>false</c>.
            </value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.ICollection.IsSynchronized"/> for details.
            </para><para>
            This property is provided for backwards compatibility only, as none of the
            <b>Tektosyne.Collections</b> classes support synchronized wrappers.</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedDictionaryEx`2.Item(`0)">
            <summary>
            Gets or sets the value associated with the specified key.</summary>
            <param name="key">
            The key whose value to get or set.</param>
            <value><para>
            The value associated with the specified <paramref name="key"/>.
            </para><para>
            If <paramref name="key"/> is not found, attempting to get it throws a <see cref="T:System.Collections.Generic.KeyNotFoundException"/>, and attempting to set it adds a new element with the
            specified key and value to the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.
            </para></value>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            The property is set to an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> differs from the specified <paramref name="key"/>.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">
            The property is read, and <paramref name="key"/> does not exist in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The property is set, and the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is
            read-only.</exception>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedDictionary`2.Item(`0)"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedDictionaryEx`2.System#Collections#IDictionary#Item(System.Object)">
            <summary>
            Gets or sets the value associated with the specified key.</summary>
            <param name="key">
            The key whose value to get or set. This argument must be compatible with <typeparamref name="TKey"/>.</param>
            <value><para>
            The value associated with the specified <paramref name="key"/>. When the property is
            set, this argument must be compatible with <typeparamref name="TValue"/>.
            </para><para>
            If <paramref name="key"/> is not found, attempting to get it throws a <see cref="T:System.Collections.Generic.KeyNotFoundException"/>, and attempting to set it adds a new element with the
            specified key and value to the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.
            </para></value>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.InvalidCastException"><para>
            <paramref name="key"/> is not compatible with <typeparamref name="TKey"/>.
            </para><para>-or-</para><para>
            The property is set to a value that is not compatible with <typeparamref name="TValue"/>.</para></exception>
            <exception cref="T:System.NotSupportedException">
            The property is set, and the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/> is
            read-only.</exception>
        </member>
        <member name="P:Tektosyne.Collections.SortedDictionaryEx`2.Keys">
            <summary>
            Gets a collection containing the keys in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.SortedDictionary`2.KeyCollection"/> containing the
            keys in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedDictionary`2.Keys"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedDictionaryEx`2.System#Collections#Generic#IDictionary{TKey@TValue}#Keys">
            <summary>
            Gets a collection containing the keys in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.ICollection`1"/> containing the keys in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</value>
        </member>
        <member name="P:Tektosyne.Collections.SortedDictionaryEx`2.System#Collections#IDictionary#Keys">
            <summary>
            Gets a collection containing the keys in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <value>
            A read-only <see cref="T:System.Collections.ICollection"/> containing the keys in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</value>
        </member>
        <member name="P:Tektosyne.Collections.SortedDictionaryEx`2.SyncRoot">
            <summary>
            Gets an object that can be used to synchronize access to the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <value>
            An object that can be used to synchronize access to the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.ICollection.SyncRoot"/> for details.
            </para><para>
            When synchronizing multi-threaded access to the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>, obtain a lock on the <b>SyncRoot</b> object rather than the collection
            itself.</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedDictionaryEx`2.Values">
            <summary>
            Gets a collection containing the values in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.SortedDictionary`2.ValueCollection"/> containing the
            values in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedDictionary`2.Values"/> for details.
            </remarks>
        </member>
        <member name="P:Tektosyne.Collections.SortedDictionaryEx`2.System#Collections#Generic#IDictionary{TKey@TValue}#Values">
            <summary>
            Gets a collection containing the values in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.ICollection`1"/> containing the values in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</value>
        </member>
        <member name="P:Tektosyne.Collections.SortedDictionaryEx`2.System#Collections#IDictionary#Values">
            <summary>
            Gets a collection containing the values in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</summary>
            <value>
            A read-only <see cref="T:System.Collections.ICollection"/> containing the values in the <see cref="T:Tektosyne.Collections.SortedDictionaryEx`2"/>.</value>
        </member>
        <member name="T:Tektosyne.Xml.XmlUtility">
            <summary>
            Provides auxiliary methods for <b>System.Xml</b>.</summary>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.CreateReaderSettings">
            <overloads>
            Creates standard <see cref="T:System.Xml.XmlReaderSettings"/>.</overloads>
            <summary>
            Creates standard <see cref="T:System.Xml.XmlReaderSettings"/> without a schema.</summary>
            <returns>
            A new <see cref="T:System.Xml.XmlReaderSettings"/> object with standard options.</returns>
            <remarks><para>
            <b>CreateReaderSettings</b> simplifies the process of creating <see cref="T:System.Xml.XmlReaderSettings"/> with commonly used options. The following properties are
            explicitly set on the new instance, with the others remaining at their default values:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:System.Xml.XmlReaderSettings.IgnoreComments"/></term>
            <description><c>true</c></description>
            </item><item>
            <term><see cref="P:System.Xml.XmlReaderSettings.IgnoreProcessingInstructions"/></term>
            <description><c>true</c></description>
            </item><item>
            <term><see cref="P:System.Xml.XmlReaderSettings.IgnoreWhitespace"/></term>
            <description><c>true</c></description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.CreateReaderSettings(System.String)">
            <summary>
            Creates standard <see cref="T:System.Xml.XmlReaderSettings"/> with the specified schema.</summary>
            <param name="schemaUri">
            The URI that specifies the schema to load.</param>
            <returns>
            A new <see cref="T:System.Xml.XmlReaderSettings"/> object with standard options that validates 
            against the specified <paramref name="schemaUri"/>.</returns>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="schemaUri"/> is a null reference or an empty string.</exception>
            <exception cref="T:System.Xml.Schema.XmlSchemaException">
            <paramref name="schemaUri"/> does not specify a valid XML schema.</exception>
            <remarks><para>
            <b>CreateReaderSettings</b> simplifies the process of creating <see cref="T:System.Xml.XmlReaderSettings"/> with commonly used options that validates against a schema.
            The following properties are explicitly set on the new instance, with the others
            remaining at their default values:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:System.Xml.XmlReaderSettings.IgnoreComments"/></term>
            <description><c>true</c></description>
            </item><item>
            <term><see cref="P:System.Xml.XmlReaderSettings.IgnoreProcessingInstructions"/></term>
            <description><c>true</c></description>
            </item><item>
            <term><see cref="P:System.Xml.XmlReaderSettings.IgnoreWhitespace"/></term>
            <description><c>true</c></description>
            </item><item>
            <term><see cref="P:System.Xml.XmlReaderSettings.Schemas"/></term>
            <description>Contains one element with the specified <paramref name="schemaUri"/> and
            the default target namespace defined in the schema.</description>
            </item><item>
            <term><see cref="P:System.Xml.XmlReaderSettings.ValidationType"/></term>
            <description><see cref="F:System.Xml.ValidationType.Schema"/></description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.CreateWriterSettings">
            <summary>
            Creates standard <see cref="T:System.Xml.XmlWriterSettings"/>.</summary>
            <returns>
            A new <see cref="T:System.Xml.XmlWriterSettings"/> object with standard options.</returns>
            <remarks><para>
            <b>CreateWriterSettings</b> simplifies the process of creating <see cref="T:System.Xml.XmlWriterSettings"/> with commonly used options. The following properties are
            explicitly set on the new instance, with the others remaining at their default values:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:System.Xml.XmlWriterSettings.Encoding"/></term>
            <description><see cref="P:System.Text.Encoding.UTF8"/></description>
            </item><item>
            <term><see cref="P:System.Xml.XmlWriterSettings.Indent"/></term>
            <description><c>true</c></description>
            </item><item>
            <term><see cref="P:System.Xml.XmlWriterSettings.IndentChars"/></term>
            <description>Two space characters (Unicode character 32, SPACE).</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.GetXmlMessage(System.Exception)">
            <summary>
            Extracts the message of the specified <see cref="T:System.Exception"/>, prepending the error
            location if it is an <see cref="T:System.Xml.XmlException"/> or <see cref="T:System.Xml.Schema.XmlSchemaException"/>.
            </summary>
            <param name="exception">
            The <see cref="T:System.Exception"/> object whose error message to extract.</param>
            <returns>
            A <see cref="T:System.String"/> containing the error location (if available) and <see cref="P:System.Exception.Message"/> of the specified <paramref name="exception"/>, or an empty
            string if <paramref name="exception"/> is a null reference.</returns>
            <remarks><para>
            <b>GetXmlMessage</b> provides a convenient way to extract the additional error
            information provided by <see cref="T:System.Xml.XmlException"/> and <see cref="T:System.Xml.Schema.XmlSchemaException"/>,
            namely the error location returned by the <see cref="P:System.Xml.XmlException.LineNumber"/> and <see cref="P:System.Xml.XmlException.LinePosition"/> properties.
            </para><para>
            If the specified <paramref name="exception"/> is of either type and specifies a
            <b>LineNumber</b> greater than zero, <b>GetXmlMessage</b> prepends a localized error
            location statement to the <see cref="P:System.Exception.Message"/> specified by <paramref name="exception"/>. Otherwise, only the <b>Message</b> is returned.</para></remarks>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.MoveToEndElement(System.Xml.XmlReader)">
            <summary>
            Moves the specified <see cref="T:System.Xml.XmlReader"/> to the next element end tag.</summary>
            <param name="reader">
            The <see cref="T:System.Xml.XmlReader"/> to move.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="reader"/> is a null reference.</exception>
            <remarks><para>
            <b>MoveToEndElement</b> returns immediately if the <see cref="P:System.Xml.XmlReader.ReadState"/> of
            the specified <paramref name="reader"/> is not <b>ReadState.Interactive</b>.
            </para><para>
            Otherwise, <b>MoveToEndElement</b> calls <see cref="M:System.Xml.XmlReader.MoveToContent"/> to skip
            over any white space, comments, and processing instructions, and then repositions
            <paramref name="reader"/> as follows, depending on content of the current node:
            </para><list type="table"><listheader>
            <term>Current Node</term><description>New Position</description>
            </listheader><item>
            <term>Empty element tag (<see cref="P:System.Xml.XmlReader.IsEmptyElement"/> is <c>true</c>)</term>
            <description>Unchanged</description>
            </item><item>
            <term>End tag (<b>XmlNodeType.EndElement</b>)</term>
            <description>Unchanged</description>
            </item><item>
            <term>Start tag (<b>XmlNodeType.Element</b>)</term>
            <description>Next element end tag of the same depth (effectively skips over any child
            nodes of the current node)</description>
            </item><item>
            <term>Other</term><description>Next element end tag of any depth</description>
            </item></list></remarks>
            <example><para>
            Note that standard methods such as <see cref="M:System.Xml.XmlReader.Skip"/> or <see cref="M:System.Xml.XmlReader.ReadOuterXml"/> do not position the <see cref="T:System.Xml.XmlReader"/> on the next
            end tag, but rather on the node <em>following</em> the next end tag, making them
            difficult to use in common loops such as this:
            </para><code>
            while (reader.Read() &amp;&amp; reader.IsStartElement()) {
            
                if (reader.Name == "DontLikeThisNode") {
                    // ERROR: loop will miss next start tag!
                    reader.Skip();
                }
                else if (reader.Name == "DontLikeThatEither") {
                    // OK: loop will hit next start tag
                    MoveToEndElement(reader);
                }
            }</code></example>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.MoveToStartElement(System.Xml.XmlReader,System.String)">
            <summary>
            Moves the specified <see cref="T:System.Xml.XmlReader"/> to the next content node which must be an
            element start tag of the specified name.</summary>
            <param name="reader">
            The <see cref="T:System.Xml.XmlReader"/> to move to the element start tag with the specified
            <paramref name="name"/>.</param>
            <param name="name">
            The <see cref="P:System.Xml.XmlReader.Name"/> of the expected start tag (<b>XmlNodeType.Element</b>).
            </param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="reader"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="name"/> is a null reference or an empty string.</exception>
            <exception cref="T:System.Xml.XmlException">
            The next content node was not a start element tag (<b>XmlNodeType.Element</b>), or its
            name was not <paramref name="name"/>.</exception>
            <remarks>
            <b>MoveToStartElement</b> calls <see cref="M:System.Xml.XmlReader.IsStartElement"/> with the
            specified <paramref name="name"/> to test the node type and name of the next content
            node returned by the specified <paramref name="reader"/>. If the test fails,
            <b>MoveToStartElement</b> throws an <see cref="T:System.Xml.XmlException"/> indicating the expected
            name; otherwise, it returns silently.</remarks>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.ReadAttributeAsBoolean(System.Xml.XmlReader,System.String,System.Boolean@)">
            <summary>
            Reads the specified attribute from the specified <see cref="T:System.Xml.XmlReader"/> and converts it
            into a <see cref="T:System.Boolean"/> value.</summary>
            <param name="reader">
            The <see cref="T:System.Xml.XmlReader"/> from which to read.</param>
            <param name="attribute">
            The <see cref="P:System.Xml.XmlReader.Name"/> of the XML attribute to read.</param>
            <param name="value">
            Returns the <see cref="T:System.Boolean"/> value read from <paramref name="attribute"/>, if
            found; otherwise, this parameter remains unchanged.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="reader"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="attribute"/> is a null reference or an empty string.</exception>
            <exception cref="T:System.FormatException">
            <paramref name="attribute"/> does not represent a <see cref="T:System.Boolean"/> value.
            </exception>
            <remarks>
            <b>ReadAttributeAsBoolean</b> does not move the specified <paramref name="reader"/>.
            </remarks>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.ReadAttributeAsByte(System.Xml.XmlReader,System.String,System.Byte@)">
            <summary>
            Reads the specified attribute from the specified <see cref="T:System.Xml.XmlReader"/> and converts it
            into a <see cref="T:System.Byte"/> value.</summary>
            <param name="reader">
            The <see cref="T:System.Xml.XmlReader"/> from which to read.</param>
            <param name="attribute">
            The <see cref="P:System.Xml.XmlReader.Name"/> of the XML attribute to read.</param>
            <param name="value">
            Returns the <see cref="T:System.Byte"/> value read from <paramref name="attribute"/>, if found;
            otherwise, this parameter remains unchanged.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="reader"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="attribute"/> is a null reference or an empty string.</exception>
            <exception cref="T:System.FormatException">
            <paramref name="attribute"/> is not in the correct format.</exception>
            <exception cref="T:System.OverflowException">
            <paramref name="attribute"/> represents a number less than <see cref="F:System.Byte.MinValue"/>
            or <see cref="F:System.Byte.MaxValue"/>.</exception>
            <remarks>
            <b>ReadAttributeAsByte</b> does not move the specified <paramref name="reader"/>.
            </remarks>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.ReadAttributeAsDouble(System.Xml.XmlReader,System.String,System.Double@)">
            <summary>
            Reads the specified attribute from the specified <see cref="T:System.Xml.XmlReader"/> and converts it
            into a <see cref="T:System.Double"/> value.</summary>
            <param name="reader">
            The <see cref="T:System.Xml.XmlReader"/> from which to read.</param>
            <param name="attribute">
            The <see cref="P:System.Xml.XmlReader.Name"/> of the XML attribute to read.</param>
            <param name="value">
            Returns the <see cref="T:System.Double"/> value read from <paramref name="attribute"/>, if found;
            otherwise, this parameter remains unchanged.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="reader"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="attribute"/> is a null reference or an empty string.</exception>
            <exception cref="T:System.FormatException">
            <paramref name="attribute"/> is not in the correct format.</exception>
            <exception cref="T:System.OverflowException">
            <paramref name="attribute"/> represents a number less than <see cref="F:System.Double.MinValue"/>
            or <see cref="F:System.Double.MaxValue"/>.</exception>
            <remarks>
            <b>ReadAttributeAsDouble</b> does not move the specified <paramref name="reader"/>.
            </remarks>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.ReadAttributeAsEnum(System.Xml.XmlReader,System.String,System.Type,System.Int32)">
            <overloads>
            Reads the specified attribute from the specified <see cref="T:System.Xml.XmlReader"/> and converts it
            into an enumeration value of the specified type.</overloads>
            <summary>
            Reads the specified attribute from the specified <see cref="T:System.Xml.XmlReader"/> and converts it
            into an enumeration value that is cast to <see cref="T:System.Int32"/>.</summary>
            <param name="reader">
            The <see cref="T:System.Xml.XmlReader"/> from which to read.</param>
            <param name="attribute">
            The <see cref="P:System.Xml.XmlReader.Name"/> of the XML attribute to read.</param>
            <param name="enumType">
            The <see cref="T:System.Type"/> of the <see cref="T:System.Enum"/> that defines the valid values for
            <paramref name="attribute"/>. The underlying type must be <see cref="T:System.Int32"/>.</param>
            <param name="defaultValue">
            The default value if <paramref name="attribute"/> is not found.</param>
            <returns><para>
            The value of <paramref name="attribute"/>, converted to an enumeration value of the
            specified <paramref name="enumType"/> and cast to an <see cref="T:System.Int32"/> value.
            </para><para>-or-</para><para>
            The specified <paramref name="defaultValue"/> if <paramref name="attribute"/> is not
            found.</para></returns>
            <exception cref="T:System.ArgumentException"><para>
            <paramref name="enumType"/> is not an <see cref="T:System.Enum"/>.
            </para><para>-or-</para><para>
            <paramref name="attribute"/> does not contain one of the named constants defined for
            <paramref name="enumType"/>.</para></exception>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="reader"/> or <paramref name="enumType"/> is a null reference.
            </exception>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="attribute"/> is a null reference or an empty string.</exception>
            <remarks><para>
            <b>ReadAttributeAsEnum</b> does not move the specified <paramref name="reader"/>.
            </para><para>
            The contents of the specified <paramref name="attribute"/> are converted into a value of
            the specified <paramref name="enumType"/> using the <see cref="M:System.Enum.Parse(System.Type,System.String)"/> method of
            the <see cref="T:System.Enum"/> class. The operation is case-sensitive.</para></remarks>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.ReadAttributeAsEnum``1(System.Xml.XmlReader,System.String,``0@)">
            <summary>
            Reads the specified attribute from the specified <see cref="T:System.Xml.XmlReader"/> and converts it
            into an enumeration value.</summary>
            <typeparam name="T">
            The <see cref="T:System.Enum"/> that defines the valid values for <paramref name="attribute"/>.
            Any underlying type is acceptable.</typeparam>
            <param name="reader">
            The <see cref="T:System.Xml.XmlReader"/> from which to read.</param>
            <param name="attribute">
            The <see cref="P:System.Xml.XmlReader.Name"/> of the XML attribute to read.</param>
            <param name="value">
            Returns the <typeparamref name="T"/> value read from <paramref name="attribute"/>, if
            found; otherwise, this parameter remains unchanged.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="attribute"/> does not contain one of the named constants defined for
            <typeparamref name="T"/>.</exception>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="reader"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="attribute"/> is a null reference or an empty string.</exception>
            <remarks><para>
            <b>ReadAttributeAsEnum</b> does not move the specified <paramref name="reader"/>.
            </para><para>
            The contents of the specified <paramref name="attribute"/> are converted into a 
            <typeparamref name="T"/> value using the <see cref="M:System.Enum.Parse(System.Type,System.String)"/> method of the <see cref="T:System.Enum"/> class. The operation is case-sensitive.</para></remarks>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.ReadAttributeAsInt32(System.Xml.XmlReader,System.String,System.Int32@)">
            <summary>
            Reads the specified attribute from the specified <see cref="T:System.Xml.XmlReader"/> and converts it
            into an <see cref="T:System.Int32"/> value.</summary>
            <param name="reader">
            The <see cref="T:System.Xml.XmlReader"/> from which to read.</param>
            <param name="attribute">
            The <see cref="P:System.Xml.XmlReader.Name"/> of the XML attribute to read.</param>
            <param name="value">
            Returns the <see cref="T:System.Int32"/> value read from <paramref name="attribute"/>, if found;
            otherwise, this parameter remains unchanged.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="reader"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="attribute"/> is a null reference or an empty string.</exception>
            <exception cref="T:System.FormatException">
            <paramref name="attribute"/> is not in the correct format.</exception>
            <exception cref="T:System.OverflowException">
            <paramref name="attribute"/> represents a number less than <see cref="F:System.Int32.MinValue"/>
            or <see cref="F:System.Int32.MaxValue"/>.</exception>
            <remarks>
            <b>ReadAttributeAsInt32</b> does not move the specified <paramref name="reader"/>.
            </remarks>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.ReadAttributeAsSingle(System.Xml.XmlReader,System.String,System.Single@)">
            <summary>
            Reads the specified attribute from the specified <see cref="T:System.Xml.XmlReader"/> and converts it
            into a <see cref="T:System.Single"/> value.</summary>
            <param name="reader">
            The <see cref="T:System.Xml.XmlReader"/> from which to read.</param>
            <param name="attribute">
            The <see cref="P:System.Xml.XmlReader.Name"/> of the XML attribute to read.</param>
            <param name="value">
            Returns the <see cref="T:System.Single"/> value read from <paramref name="attribute"/>, if found;
            otherwise, this parameter remains unchanged.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="reader"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="attribute"/> is a null reference or an empty string.</exception>
            <exception cref="T:System.FormatException">
            <paramref name="attribute"/> is not in the correct format.</exception>
            <exception cref="T:System.OverflowException">
            <paramref name="attribute"/> represents a number less than <see cref="F:System.Single.MinValue"/>
            or <see cref="F:System.Single.MaxValue"/>.</exception>
            <remarks>
            <b>ReadAttributeAsSingle</b> does not move the specified <paramref name="reader"/>.
            </remarks>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.ReadAttributeAsString(System.Xml.XmlReader,System.String,System.String@)">
            <summary>
            Reads the specified attribute from the specified <see cref="T:System.Xml.XmlReader"/>.</summary>
            <param name="reader">
            The <see cref="T:System.Xml.XmlReader"/> from which to read.</param>
            <param name="attribute">
            The <see cref="P:System.Xml.XmlReader.Name"/> of the XML attribute to read.</param>
            <param name="value">
            Returns the <see cref="T:System.String"/> value read from <paramref name="attribute"/>, if found;
            otherwise, this parameter remains unchanged.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="reader"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="attribute"/> is a null reference or an empty string.</exception>
            <remarks><para>
            <b>ReadAttributeAsString</b> does not move the specified <paramref name="reader"/>.
            </para><para>
            If the specified <paramref name="attribute"/> is found, its <see cref="T:System.String"/> value
            is interned before assignment to <paramref name="value"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Xml.XmlUtility.ReadTextElement(System.Xml.XmlReader)">
            <summary>
            Reads a text-only element and stops at the end element tag.</summary>
            <param name="reader">
            The <see cref="T:System.Xml.XmlReader"/> from which to read.</param>
            <returns>
            The text contained in the element that was read from the specified <paramref name="reader"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="reader"/> is a null reference.</exception>
            <exception cref="T:System.Xml.XmlException">
            <paramref name="reader"/> is not positioned on or before a start element tag
            (<b>XmlNodeType.Element</b>) that precedes a simple text value
            (<b>XmlNodeType.Text</b>).</exception>
            <remarks><para>
            <b>ReadTextElement</b> calls <see cref="M:System.Xml.XmlReader.IsStartElement"/> to position the
            specified <paramref name="reader"/> on the next content node. If that node is an empty
            element, <b>ReadTextElement</b> returns an empty string without further moving the
            <paramref name="reader"/>.
            </para><para>
            Otherwise, <b>ReadTextElement</b> checks that the content node precedes a simple text
            value (<b>XmlNodeType.Text</b>), and moves the <paramref name="reader"/> to the matching
            end element tag (<b>XmlNodeType.EndElement</b>) before returning the text value.
            </para><para>
            <b>ReadTextElement</b> differs from the standard library method <see cref="M:System.Xml.XmlReader.ReadElementString"/> only in the position of the <paramref name="reader"/> when the method returns. <b>ReadElementString</b> moves its <paramref name="reader"/> to the node <em>following</em> the end tag, making it difficult to use
            in loops of the form <c>while (reader.Read())</c>, as described in <see cref="M:Tektosyne.Xml.XmlUtility.MoveToEndElement(System.Xml.XmlReader)"/>.</para></remarks>
        </member>
        <member name="T:Tektosyne.Win32Api.SafeMemoryHandle">
            <summary>
            Represents a wrapper class for unmanaged memory handles.</summary>
            <remarks><para>
            <b>SafeMemoryHandle</b> is an abstract base class for <see cref="T:System.Runtime.InteropServices.SafeHandle"/> derivatives
            that wrap unmanaged memory handles. All <b>SafeMemoryHandle</b> instances have an invalid
            handle value of <see cref="F:System.IntPtr.Zero"/> and provide (unsafe!) methods to copy data to and
            from arbitrary locations within their unmanaged memory blocks.
            </para><para>
            The derived classes <see cref="T:Tektosyne.Win32Api.SafeGlobalHandle"/> and <see cref="T:Tektosyne.Win32Api.SafeMapiHandle"/>
            implement <b>SafeMemoryHandle</b> for unmanaged memory blocks that are managed by
            <see cref="M:System.Runtime.InteropServices.Marshal.AllocHGlobal(System.IntPtr)"/> and by Simple MAPI, respectively.</para></remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeMemoryHandle.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Win32Api.SafeMemoryHandle"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Win32Api.SafeMemoryHandle"/> class with default
            parameters.</summary>
            <remarks>
            The new <b>SafeMemoryHandle</b> instance will release its handle when finalized or
            disposed of.</remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeMemoryHandle.#ctor(System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Win32Api.SafeMemoryHandle"/> class with the
            specified ownership flag.</summary>
            <param name="ownsHandle">
            <c>true</c> if the new instance should release its handle when finalized or disposed of;
            otherwise, <c>false</c>.</param>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeMemoryHandle.#ctor(System.IntPtr,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Win32Api.SafeMemoryHandle"/> class with the
            specified existing handle and ownership flag.</summary>
            <param name="existingHandle">
            An <see cref="T:System.IntPtr"/> value indicating the existing handle to use.</param>
            <param name="ownsHandle">
            <c>true</c> if the new instance should release its handle when finalized or disposed of;
            otherwise, <c>false</c>.</param>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeMemoryHandle.GetMemory(System.Int32,System.Object)">
            <overloads>
            Copies the unmanaged memory block at the specified offset to a managed <see cref="T:System.Object"/>.</overloads>
            <summary>
            Copies the unmanaged memory block at the specified offset into the specified managed
            <see cref="T:System.Object"/>.</summary>
            <param name="offset">
            The offset from the unmanaged memory handle, in bytes, at which copying begins.</param>
            <param name="structure">
            The <see cref="T:System.Object"/> to receive the data at <paramref name="offset"/>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="structure"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="offset"/> is less than zero.</exception>
            <exception cref="T:Tektosyne.PropertyValueException">
            <see cref="P:System.Runtime.InteropServices.SafeHandle.IsInvalid"/> is <c>true</c>.</exception>
            <remarks><para>
            <b>GetMemory</b> calls <see cref="M:System.Runtime.InteropServices.Marshal.PtrToStructure(System.IntPtr,System.Object)"/> to copy the data at the
            specified <paramref name="offset"/> within the unmanaged memory block into the specified
            <paramref name="structure"/> which must be an instance of a formatted class.
            </para><note type="caution">
            The specified <paramref name="offset"/> is <b>not</b> checked against the (unknown) size
            of the unmanaged memory block. Buffer overruns are possible!</note></remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeMemoryHandle.GetMemory(System.Int32,System.Type)">
            <summary>
            Copies the unmanaged memory block at the specified offset to a managed <see cref="T:System.Object"/> of the specified type.</summary>
            <param name="offset">
            The offset from the unmanaged memory handle, in bytes, at which copying begins.</param>
            <param name="type">
            The <see cref="T:System.Type"/> of the newly allocated <see cref="T:System.Object"/> that receives the
            data at <paramref name="offset"/>.</param>
            <returns>
            A new <see cref="T:System.Object"/> of the specified <paramref name="type"/> containing the data
            at <paramref name="offset"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="type"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="offset"/> is less than zero.</exception>
            <exception cref="T:Tektosyne.PropertyValueException">
            <see cref="P:System.Runtime.InteropServices.SafeHandle.IsInvalid"/> is <c>true</c>.</exception>
            <remarks><para>
            <b>GetMemory</b> calls <see cref="M:System.Runtime.InteropServices.Marshal.PtrToStructure(System.IntPtr,System.Object)"/> to copy the data at the
            specified <paramref name="offset"/> within the unmanaged memory block into a new
            instance the specified <paramref name="type"/> which must represent a formatted class.
            </para><note type="caution">
            The specified <paramref name="offset"/> is <b>not</b> checked against the (unknown) size
            of the unmanaged memory block. Buffer overruns are possible!</note></remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeMemoryHandle.SetMemory(System.Object,System.Int32,System.Boolean)">
            <summary>
            Copies the data of the specified managed <see cref="T:System.Object"/> into the unmanaged memory
            block at the specified offset.</summary>
            <param name="structure">
            The <see cref="T:System.Object"/> containing the data to store at <paramref name="offset"/>.
            </param>
            <param name="offset">
            The offset from the unmanaged memory handle, in bytes, at which copying begins.</param>
            <param name="delete">
            <c>true</c> to have the <see cref="M:System.Runtime.InteropServices.Marshal.DestroyStructure(System.IntPtr,System.Type)"/> method called on the
            unmanaged memory at <paramref name="offset"/> before copying begins. Note that passing
            <c>false</c> can lead to a memory leak.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="structure"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="offset"/> is less than zero.</exception>
            <exception cref="T:Tektosyne.PropertyValueException">
            <see cref="P:System.Runtime.InteropServices.SafeHandle.IsInvalid"/> is <c>true</c>.</exception>
            <remarks><para>
            <b>SetMemory</b> calls <see cref="M:System.Runtime.InteropServices.Marshal.StructureToPtr(System.Object,System.IntPtr,System.Boolean)"/> to copy the data of the
            specified <paramref name="structure"/>, which must be an instance of a formatted class,
            into the unmanaged memory block at the specified <paramref name="offset"/>.
            </para><note type="caution">
            The specified <paramref name="offset"/> is <b>not</b> checked against the (unknown) size
            of the unmanaged memory block. Buffer overruns are possible!</note></remarks>
        </member>
        <member name="P:Tektosyne.Win32Api.SafeMemoryHandle.IsInvalid">
            <summary>
            Gets a value indicating whether the unmanaged memory handle is invalid.</summary>
            <value>
            <c>true</c> if the unmanaged memory handle was never allocated or has already been
            released; otherwise, <c>false</c>.</value>
            <remarks>
            <b>IsInvalid</b> returns <c>true</c> either if the unmanaged memory handle equals <see cref="F:System.IntPtr.Zero"/>, or if <see cref="P:System.Runtime.InteropServices.SafeHandle.IsClosed"/> is <c>true</c>.</remarks>
        </member>
        <member name="T:Tektosyne.Win32Api.SafeGlobalHandle">
            <summary>
            Represents a wrapper class for unmanaged memory handles that are released by <see cref="M:System.Runtime.InteropServices.Marshal.FreeHGlobal(System.IntPtr)"/>.</summary>
            <remarks><para>
            <b>SafeGlobalHandle</b> provides a <see cref="T:Tektosyne.Win32Api.SafeMemoryHandle"/> whose handle, if valid
            and owned, is released using the standard method <see cref="M:System.Runtime.InteropServices.Marshal.FreeHGlobal(System.IntPtr)"/>.
            </para><para>
            Call <see cref="M:Tektosyne.Win32Api.SafeGlobalHandle.AllocateHandle(System.Int32)"/> to allocate an unmanaged memory block
            of an arbitrary size, using the standard method <see cref="M:System.Runtime.InteropServices.Marshal.AllocHGlobal(System.IntPtr)"/>.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeGlobalHandle.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Win32Api.SafeGlobalHandle"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Win32Api.SafeGlobalHandle"/> class with default
            parameters.</summary>
            <remarks>
            The new <b>SafeGlobalHandle</b> instance will release its handle when finalized or
            disposed of.</remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeGlobalHandle.#ctor(System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Win32Api.SafeGlobalHandle"/> class with the
            specified ownership flag.</summary>
            <param name="ownsHandle">
            <c>true</c> if the new instance should release its handle when finalized or disposed of;
            otherwise, <c>false</c>.</param>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeGlobalHandle.#ctor(System.IntPtr,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Win32Api.SafeGlobalHandle"/> class with the
            specified existing handle and ownership flag.</summary>
            <param name="existingHandle">
            An <see cref="T:System.IntPtr"/> value indicating the existing handle to use.</param>
            <param name="ownsHandle">
            <c>true</c> if the new instance should release its handle when finalized or disposed of;
            otherwise, <c>false</c>.</param>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeGlobalHandle.AllocateHandle(System.Int32)">
            <summary>
            Allocates an unmanaged memory block of the specified size.</summary>
            <param name="byteCount">
            The number of bytes to allocate.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="byteCount"/> is equal to or less than zero.</exception>
            <exception cref="T:Tektosyne.PropertyValueException">
            <see cref="P:System.Runtime.InteropServices.SafeHandle.IsInvalid"/> is <c>false</c>.</exception>
            <remarks>
            <b>AllocateHandle</b> calls <see cref="M:System.Runtime.InteropServices.Marshal.AllocHGlobal(System.IntPtr)"/> to allocate an unmanaged
            memory block whose size equals the specified <paramref name="byteCount"/>. The
            allocation and subsequent handle assignment are placed in a constrained execution
            region.</remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeGlobalHandle.ReleaseHandle">
            <summary>
            Releases the unmanaged memory handle.</summary>
            <returns>
            <c>true</c> if the unmanaged memory handle was released successfully; otherwise,
            <c>false</c>.</returns>
            <remarks>
            <b>ReleaseHandle</b> calls <see cref="M:System.Runtime.InteropServices.Marshal.FreeHGlobal(System.IntPtr)"/> to release the unmanaged
            memory handle, and returns <c>true</c> exactly if no exception occurred. Any exceptions
            that occur are never propagated to the caller.</remarks>
        </member>
        <member name="T:Tektosyne.Win32Api.SafeMapiHandle">
            <summary>
            Represents a wrapper class for unmanaged memory handles that are released by <see cref="M:Tektosyne.Win32Api.Mapi.MAPIFreeBuffer(System.IntPtr)"/>.</summary>
            <remarks><para>
            <b>SafeMapiHandle</b> provides a <see cref="T:Tektosyne.Win32Api.SafeMemoryHandle"/> whose handle, if valid and
            owned, is released using the Simple MAPI function <see cref="M:Tektosyne.Win32Api.Mapi.MAPIFreeBuffer(System.IntPtr)"/>.
            </para><para>
            Simple MAPI buffers are implicitly allocated by several <see cref="T:Tektosyne.Win32Api.Mapi"/> methods. They
            cannot be allocated explicitly.</para></remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeMapiHandle.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Win32Api.SafeMapiHandle"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Win32Api.SafeMapiHandle"/> class with default
            parameters.</summary>
            <remarks>
            The new <b>SafeMapiHandle</b> instance will release its handle when finalized or
            disposed of.</remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeMapiHandle.#ctor(System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Win32Api.SafeMapiHandle"/> class with the specified
            ownership flag.</summary>
            <param name="ownsHandle">
            <c>true</c> if the new instance should release its handle when finalized or disposed of;
            otherwise, <c>false</c>.</param>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeMapiHandle.#ctor(System.IntPtr,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Win32Api.SafeMapiHandle"/> class with the specified
            existing handle and ownership flag.</summary>
            <param name="existingHandle">
            An <see cref="T:System.IntPtr"/> value indicating the existing handle to use.</param>
            <param name="ownsHandle">
            <c>true</c> if the new instance should release its handle when finalized or disposed of;
            otherwise, <c>false</c>.</param>
        </member>
        <member name="M:Tektosyne.Win32Api.SafeMapiHandle.ReleaseHandle">
            <summary>
            Releases the unmanaged memory handle.</summary>
            <returns>
            <c>true</c> if the unmanaged memory handle was released successfully; otherwise,
            <c>false</c>.</returns>
            <remarks>
            <b>ReleaseHandle</b> calls <see cref="M:Tektosyne.Win32Api.Mapi.MAPIFreeBuffer(System.IntPtr)"/> to release the unmanaged
            memory handle, and returns <c>true</c> exactly if the resulting <see cref="T:Tektosyne.Win32Api.MapiError"/>
            code equals <see cref="F:Tektosyne.Win32Api.MapiError.SUCCESS_SUCCESS"/>.</remarks>
        </member>
        <member name="T:Tektosyne.Windows.WindowsUtility">
            <summary>
            Provides auxiliary methods for <b>System.Windows</b>.</summary>
        </member>
        <member name="M:Tektosyne.Windows.WindowsUtility.CreateLineFigure(System.Boolean,System.Windows.Point[])">
            <summary>
            Creates a <see cref="T:System.Windows.Media.PathFigure"/> that connects the specified points with a sequence of
            stroked line segments.</summary>
            <param name="isClosed">
            The initial value for the <see cref="P:System.Windows.Media.PathFigure.IsClosed"/> property of the new <see cref="T:System.Windows.Media.PathFigure"/>.</param>
            <param name="points">
            The <see cref="T:System.Array"/> of <see cref="T:System.Windows.Point"/> instances to connect.</param>
            <returns>
            A new <see cref="T:System.Windows.Media.PathFigure"/> connecting the specified <paramref name="points"/>. The
            first element is the <see cref="P:System.Windows.Media.PathFigure.StartPoint"/>, and each following element is
            one stroked <see cref="T:System.Windows.Media.LineSegment"/>.</returns>
        </member>
        <member name="M:Tektosyne.Windows.WindowsUtility.DoEvents(System.Windows.Threading.Dispatcher)">
            <summary>
            Processes all messages currently in the message queue of the specified <see cref="T:System.Windows.Threading.Dispatcher"/>.</summary>
            <param name="dispatcher">
            The <see cref="T:System.Windows.Threading.Dispatcher"/> whose messages to process.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="dispatcher"/> is a null reference.</exception>
            <remarks><para>
            <b>DoEvents</b> synchronously invokes an empty delegate with <see cref="F:System.Windows.Threading.DispatcherPriority.Background"/> priority on the specified <paramref name="dispatcher"/>. This forces the <paramref name="dispatcher"/> to process all queued
            messages with a higher priority, such as redrawing the display.
            </para><note type="caution">
            <b>DoEvents</b> emulates the behavior of the eponymous Windows Forms method and shares
            its risk of reentrancy. The processed messages may cause recursion into user code or
            unexpected changes to the application state before <b>DoEvents</b> returns.
            </note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.WindowsUtility.FindParentListItem(System.Object)">
            <summary>
            Finds the <see cref="T:System.Windows.Controls.ListBoxItem"/> that contains the specified <see cref="T:System.Object"/>.
            </summary>
            <param name="obj">
            An <see cref="T:System.Object"/> that is part of the visual tree rooted in the <see cref="T:System.Windows.Controls.ListBoxItem"/> to find.</param>
            <returns><para>
            The nearest <see cref="T:System.Windows.Controls.ListBoxItem"/> that contains the specified <paramref name="obj"/>
            as part of its visual tree.
            </para><para>-or-</para><para>
            A null reference if no such <see cref="T:System.Windows.Controls.ListBoxItem"/> was found.</para></returns>
            <remarks><para>
            <b>FindParentListItem</b> returns the result of <see cref="M:Tektosyne.Windows.WindowsUtility.FindVisualParent``1(System.Windows.DependencyObject)"/> with the specified <paramref name="obj"/> cast to
            type <see cref="T:System.Windows.DependencyObject"/>, or a null reference if that cast fails.
            </para><para>
            <b>FindParentListItem</b> is a convenient shortcut for the frequent task of locating the
            <see cref="T:System.Windows.Controls.ListBoxItem"/> or <see cref="T:System.Windows.Controls.ListViewItem"/> that contains the untyped <see cref="P:System.Windows.RoutedEventArgs.Source"/> of a <see cref="T:System.Windows.RoutedEvent"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.WindowsUtility.FindVisualParent``1(System.Windows.DependencyObject)">
            <summary>
            Finds the nearest visual parent of the specified type that contains the specified <see cref="T:System.Windows.DependencyObject"/>.</summary>
            <typeparam name="T">
            The type of the visual parent to find.</typeparam>
            <param name="obj">
            A <see cref="T:System.Windows.DependencyObject"/> that is part of the visual tree rooted in the parent.
            </param>
            <returns><para>
            The nearest parent of type <typeparamref name="T"/> that contains the specified
            <paramref name="obj"/> as part of its visual tree.
            </para><para>-or-</para><para>
            A null reference if no such parent was found.</para></returns>
            <remarks><para>
            <b>FindVisualParent</b> calls <see cref="M:System.Windows.Media.VisualTreeHelper.GetParent(System.Windows.DependencyObject)"/> to traverse the
            visual tree from the specified <paramref name="obj"/> until either a parent of type 
            <typeparamref name="T"/> is found, or the tree has ended.
            </para><para>
            <b>FindVisualParent</b> returns a null reference if <paramref name="obj"/> is a null
            reference, and <paramref name="obj"/> itself if its type is <typeparamref name="T"/>.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.WindowsUtility.GetMemoryStatus">
            <summary>
            Gets a <see cref="T:System.String"/> describing the current memory status.</summary>
            <returns>
            A multi-line <see cref="T:System.String"/> indicating the available and total physical, virtual,
            and process memory.</returns>
            <remarks>
            <b>GetMemoryStatus</b> invokes <see cref="M:Tektosyne.Win32Api.Kernel.GlobalMemoryStatusEx(Tektosyne.Win32Api.MemoryStatusEx)"/> to
            obtain information on the current memory status. The returned <see cref="T:System.String"/>
            consists of three lines, all of which end with a space to compensate for transmission
            mechanisms that drop carriage returns and line feeds (i.e. MAPI).</remarks>
        </member>
        <member name="M:Tektosyne.Windows.WindowsUtility.GetSystemBitmap(System.Windows.MessageBoxImage)">
            <summary>
            Returns a <see cref="T:System.Windows.Media.Imaging.BitmapSource"/> created from the <see cref="T:System.Drawing.Icon"/> for the
            specified <see cref="T:System.Windows.MessageBoxImage"/> value.</summary>
            <param name="image">
            The <see cref="T:System.Windows.MessageBoxImage"/> value whose corresponding <see cref="T:System.Drawing.Icon"/> to find.
            </param>
            <returns>
            A <see cref="T:System.Windows.Media.Imaging.BitmapSource"/> created from the <see cref="T:System.Drawing.SystemIcons"/> element that
            corresponds to the specified <paramref name="image"/>.</returns>
            <remarks>
            <b>GetSystemBitmap</b> returns a new <see cref="T:System.Windows.Media.Imaging.BitmapSource"/> object created from the
            <see cref="T:System.Drawing.Icon"/> returned by <see cref="M:Tektosyne.Windows.WindowsUtility.GetSystemIcon(System.Windows.MessageBoxImage)"/> for the
            specified <paramref name="image"/>, or a null reference if <b>GetSystemImage</b> returns
            a null reference.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.WindowsUtility.GetSystemIcon(System.Windows.MessageBoxImage)">
            <summary>
            Returns the <see cref="T:System.Drawing.Icon"/> for the specified <see cref="T:System.Windows.MessageBoxImage"/> value.
            </summary>
            <param name="image">
            The <see cref="T:System.Windows.MessageBoxImage"/> value whose corresponding <see cref="T:System.Drawing.Icon"/> to
            return.</param>
            <returns>
            The <see cref="T:System.Drawing.SystemIcons"/> element that corresponds to the specified <paramref name="image"/>.</returns>
            <remarks><para>
            <b>GetSystemIcon</b> always returns the <see cref="T:System.Drawing.SystemIcons"/> element with the same
            name as the specified <paramref name="image"/>, with two exceptions:
            </para><list type="bullet"><item>
            <see cref="F:System.Windows.MessageBoxImage.None"/> maps to a null reference.
            </item><item>
            <see cref="F:System.Windows.MessageBoxImage.Stop"/> maps to the <see cref="P:System.Drawing.SystemIcons.Error"/> icon.
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Windows.WindowsUtility.GetTypeface(System.Windows.Controls.Control)">
            <summary>
            Gets the current <see cref="T:System.Windows.Media.Typeface"/> of the specified <see cref="T:System.Windows.Controls.Control"/>.
            </summary>
            <param name="control">
            The <see cref="T:System.Windows.Controls.Control"/> whose <see cref="T:System.Windows.Media.Typeface"/> to return.</param>
            <returns>
            The current <see cref="T:System.Windows.Media.Typeface"/> of the specified <paramref name="control"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="control"/> is a null reference.</exception>
            <remarks>
            <b>GetTypeface</b> creates the current <see cref="T:System.Windows.Media.Typeface"/> of the specified <paramref name="control"/> from its current <see cref="P:System.Windows.Controls.Control.FontFamily"/>, <see cref="P:System.Windows.Controls.Control.FontStyle"/>, <see cref="P:System.Windows.Controls.Control.FontWeight"/>, and <see cref="P:System.Windows.Controls.Control.FontStretch"/> values.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.WindowsUtility.GetVisualDpi(System.Windows.Media.Visual)">
            <summary>
            Returns the dots-per-inch resolution of the specified <see cref="T:System.Windows.Media.Visual"/>.</summary>
            <param name="visual">
            The <see cref="T:System.Windows.Media.Visual"/> to examine.</param>
            <returns>
            A <see cref="T:System.Windows.Point"/> containing the dots-per-inch resolution of the specified <paramref name="visual"/>, with the horizontal dpi in the <see cref="P:System.Windows.Point.X"/> component and the
            vertical dpi in the <see cref="P:System.Windows.Point.Y"/> component.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="visual"/> is a null reference.</exception>
            <remarks><para>
            <b>GetVisualDpi</b> returns a default resolution of 96 dpi in both dimensions if the
            <see cref="P:System.Windows.Media.CompositionTarget.TransformFromDevice"/> matrix for the specified <paramref name="visual"/> is invalid or cannot be determined.
            </para><para>
            Specifying a <paramref name="visual"/> that is currently visible on the screen returns
            the dots-per-inch resolution of that screen. <see cref="P:Tektosyne.Windows.WindowsUtility.ScreenDpi"/> provides an easier
            way to obtain this value for the primary screen, however.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.WindowsUtility.ScrollStep(System.Windows.Controls.ScrollViewer,Tektosyne.Windows.ScrollDirection,System.Windows.Size)">
            <summary>
            Scrolls a <see cref="T:System.Windows.Controls.ScrollViewer"/> by the specified distance in the specified <see cref="T:Tektosyne.Windows.ScrollDirection"/>.</summary>
            <param name="viewer">
            The <see cref="T:System.Windows.Controls.ScrollViewer"/> to scroll.</param>
            <param name="direction">
            A <see cref="T:Tektosyne.Windows.ScrollDirection"/> value indicating the direction in which to scroll.
            </param>
            <param name="stepSize">
            A <see cref="T:System.Windows.Size"/> value indicating the horizontal or vertical distance by which to
            scroll, in device-independent pixels.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="viewer"/> is a null reference.</exception>
            <exception cref="T:System.ComponentModel.InvalidEnumArgumentException">
            <paramref name="direction"/> is not a valid <see cref="T:Tektosyne.Windows.ScrollDirection"/> value.
            </exception>
            <remarks><para>
            <b>ScrollStep</b> uses only one component of the specified <paramref name="stepSize"/>
            to change the <see cref="P:System.Windows.Controls.ScrollViewer.HorizontalOffset"/> or <see cref="P:System.Windows.Controls.ScrollViewer.VerticalOffset"/> of the specified <paramref name="viewer"/>,
            depending on the specified <paramref name="direction"/>:
            </para><list type="table"><listheader>
            <term>Specified <paramref name="direction"/></term>
            <description>Use of <paramref name="stepSize"/></description>
            </listheader><item>
            <term><see cref="F:Tektosyne.Windows.ScrollDirection.Left"/></term>
            <description>Scroll left by <see cref="P:System.Windows.Size.Width"/></description>
            </item><item>
            <term><see cref="F:Tektosyne.Windows.ScrollDirection.Right"/></term>
            <description>Scroll right by <see cref="P:System.Windows.Size.Width"/></description>
            </item><item>
            <term><see cref="F:Tektosyne.Windows.ScrollDirection.Up"/></term>
            <description>Scroll up by <see cref="P:System.Windows.Size.Height"/></description>
            </item><item>
            <term><see cref="F:Tektosyne.Windows.ScrollDirection.Down"/></term>
            <description>Scroll down by <see cref="P:System.Windows.Size.Height"/></description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.Windows.WindowsUtility.SelectAndShow(System.Windows.Controls.ListBox,System.Int32)">
            <overloads>
            Selects the specified <see cref="T:System.Windows.Controls.ListBox"/> item and ensures that it is visible.
            </overloads>
            <summary>
            Selects the <see cref="T:System.Windows.Controls.ListBox"/> item with the specified <see cref="T:System.Int32"/> index, and
            ensures that it is visible.</summary>
            <param name="listBox">
            The <see cref="T:System.Windows.Controls.ListBox"/> containing the item.</param>
            <param name="index">
            The zero-based index of the item to select. This argument may be less than zero or
            otherwise invalid.</param>
            <returns>
            The specified <paramref name="index"/> if valid for the specified <paramref name="listBox"/>; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="listBox"/> is a null reference.</exception>
            <remarks><para>
            <b>SelectAndShow</b> selects the item with the specified <paramref name="index"/> in the
            <see cref="P:System.Windows.Controls.ItemsControl.Items"/> collection of the specified <paramref name="listBox"/>,
            and also calls <see cref="M:System.Windows.Controls.ListBox.ScrollIntoView(System.Object)"/> to ensure that it is visible.
            </para><para>
            <b>SelectAndShow</b> does nothing if the specified <paramref name="index"/> is less than
            zero, or greater than or equal to the number of <see cref="P:System.Windows.Controls.ItemsControl.Items"/> in the 
            <paramref name="listBox"/>.
            </para><para>
            If the <see cref="P:System.Windows.Controls.ListBox.SelectionMode"/> of the specified <paramref name="listBox"/>
            equals <see cref="F:System.Windows.Controls.SelectionMode.Single"/>, the indicated item becomes the new <see cref="P:System.Windows.Controls.Primitives.Selector.SelectedItem"/>; otherwise, it is added to the <see cref="P:System.Windows.Controls.ListBox.SelectedItems"/> collection.
            </para><note type="caution">
            <see cref="T:System.Windows.Controls.ListView"/> derives from <see cref="T:System.Windows.Controls.ListBox"/> but its default <see cref="P:System.Windows.Controls.ListBox.SelectionMode"/> is <see cref="F:System.Windows.Controls.SelectionMode.Extended"/> rather than <see cref="F:System.Windows.Controls.SelectionMode.Single"/>.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.WindowsUtility.SelectAndShow(System.Windows.Controls.ListBox,System.Object)">
            <summary>
            Selects the <see cref="T:System.Windows.Controls.ListBox"/> item that equals or contains the specified <see cref="T:System.Object"/>, and ensures that it is visible.</summary>
            <param name="listBox">
            The <see cref="T:System.Windows.Controls.ListBox"/> containing the item.</param>
            <param name="item">
            The item to select. This argument may be a null reference.</param>
            <returns>
            The index position of <paramref name="item"/> if found within the specified <paramref name="listBox"/>; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="listBox"/> is a null reference.</exception>
            <remarks><para>
            <b>SelectAndShow</b> selects the specified <paramref name="item"/> in the <see cref="P:System.Windows.Controls.ItemsControl.Items"/> collection of the specified <paramref name="listBox"/>, and
            also calls <see cref="M:System.Windows.Controls.ListBox.ScrollIntoView(System.Object)"/> to ensure that it is visible.
            </para><para>
            <b>SelectAndShow</b> does nothing if the specified <paramref name="item"/> is not found
            among the <see cref="P:System.Windows.Controls.ItemsControl.Items"/> in the <paramref name="listBox"/>.
            </para><para>
            Please refer to the other <see cref="M:Tektosyne.Windows.WindowsUtility.SelectAndShow(System.Windows.Controls.ListBox,System.Int32)"/> overload for
            further details.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.WindowsUtility.ToGdiColor(System.Windows.Media.Color)">
            <summary>
            Converts the specified WPF <see cref="T:System.Windows.Media.Color"/> to its GDI+ representation.</summary>
            <param name="color">
            The WPF <see cref="T:System.Windows.Media.Color"/> value to convert.</param>
            <returns>
            A GDI+ <see cref="T:System.Drawing.Color"/> value whose alpha and color channels are identical to
            those of the specified <paramref name="color"/>.</returns>
            <remarks>
            <b>ToGdiColor</b> only converts the <see cref="T:System.Byte"/> channel values of the specified
            <paramref name="color"/> since the GDI+ <see cref="T:System.Drawing.Color"/> structure cannot
            represent the full scRGB color space.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.WindowsUtility.ToWpfColor(System.Drawing.Color)">
            <summary>
            Converts the specified GDI+ <see cref="T:System.Drawing.Color"/> to its WPF representation.</summary>
            <param name="color">
            The GDI+ <see cref="T:System.Drawing.Color"/> value to convert.</param>
            <returns>
            A WPF <see cref="T:System.Windows.Media.Color"/> value whose alpha and color channels are identical to those of
            the specified <paramref name="color"/>.</returns>
        </member>
        <member name="P:Tektosyne.Windows.WindowsUtility.Copyright">
            <summary>
            Gets the copyright notice for the executable that started the application.</summary>
            <value>
            The value of the <see cref="T:System.Reflection.AssemblyCopyrightAttribute"/> attribute for the executable
            that started the current application.</value>
            <remarks>
            <b>Copyright</b> returns the literal string "Copyright" if the executable that started
            the current application does not define an <see cref="T:System.Reflection.AssemblyCopyrightAttribute"/>. If
            defined, this attribute should specify the application's copyright notice.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.WindowsUtility.PublicKeyToken">
            <summary>
            Gets the public key token for the executable that started the application.</summary>
            <value>
            A string of hexadecimal digits representing the public key token for the executable that
            started the current application.</value>
            <remarks>
            <b>PublicKeyToken</b> returns a null reference if the executable that started the
            current application is not signed with a strong name.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.WindowsUtility.ScreenDpi">
            <summary>
            Gets the dots-per-inch resolution of the primary screen.</summary>
            <value>
            A <see cref="T:System.Windows.Point"/> containing the dots-per-inch resolution of the primary screen,
            with the horizontal dpi in the <see cref="P:System.Windows.Point.X"/> component and the vertical dpi in
            the <see cref="P:System.Windows.Point.Y"/> component.</value>
            <remarks>
            <b>ScreenDpi</b> returns the dots-per-inch resolution of a GDI+ <see cref="T:System.Drawing.Graphics"/> object created from a null HWND, i.e. the primary Windows desktop.
            </remarks>
        </member>
        <member name="T:Tektosyne.Windows.ScrollDirection">
            <summary>
            Specifies the four possible scroll directions.</summary>
            <remarks>
            <b>ScrollDirection</b> specifies the possible directions for the <see cref="M:Tektosyne.Windows.WindowsUtility.ScrollStep(System.Windows.Controls.ScrollViewer,Tektosyne.Windows.ScrollDirection,System.Windows.Size)"/> method.</remarks>
        </member>
        <member name="F:Tektosyne.Windows.ScrollDirection.Left">
            <summary>Specifies scrolling to the left.</summary>
        </member>
        <member name="F:Tektosyne.Windows.ScrollDirection.Right">
            <summary>Specifies scrolling to the right.</summary>
        </member>
        <member name="F:Tektosyne.Windows.ScrollDirection.Up">
            <summary>Specifies scrolling up.</summary>
        </member>
        <member name="F:Tektosyne.Windows.ScrollDirection.Down">
            <summary>Specifies scrolling down.</summary>
        </member>
        <member name="T:Tektosyne.Windows.NumericUpDownHost">
            <summary>
            Provides a <see cref="T:Tektosyne.Windows.ComponentControl"/> that hosts a single <see cref="T:Tektosyne.Windows.NumericUpDownEx"/>
            control.</summary>
            <remarks><para>
            <b>NumericUpDownHost</b> combines a <see cref="T:Tektosyne.Windows.NumericUpDownEx"/> control with dedicated
            <see cref="P:Tektosyne.Windows.ComponentControl.ErrorProvider"/> and <see cref="P:Tektosyne.Windows.ComponentControl.ToolTip"/>
            components for easy hosting in Windows Presentation Foundation.
            </para><para>
            To use a <see cref="T:Tektosyne.Windows.NumericUpDownEx"/> from XAML, simply add a <c>WindowsFormsHost</c>
            element containing a single <b>NumericUpDownHost</b> element. The height of the hosted
            control is automatically set to the height of the <b>NumericUpDownEx</b> control and should
            not be specified.
            </para><para>
            The width of the hosted control should be specified on the <c>WindowsFormsHost</c> element
            for consistency with WPF measurements and scaling. The width of the hosted
            <b>NumericUpDownEx</b> control equals the specified width less the width of the
            <b>ErrorProvider</b> icon.
            </para><para>
            <b>NumericUpDownHost</b> also provides proxies for the most important <see cref="T:System.Windows.Forms.NumericUpDown"/> properties and events so that they can be set directly from XAML.
            Lastly, when the <b>NumericUpDownHost</b> receives input focus, it is automatically shifted
            to the hosted <see cref="T:Tektosyne.Windows.NumericUpDownEx"/> control.
            </para><note type="caution">
            The <see cref="P:System.Windows.Controls.Label.Target"/> binding of a WPF <see cref="T:System.Windows.Controls.Label"/> does not reliably
            transfer input focus to a <see cref="T:System.Windows.Forms.Integration.WindowsFormsHost"/> or to its hosted Windows Forms <see cref="T:System.Windows.Forms.Control"/>. Use <see cref="T:Tektosyne.Windows.WindowsFormsHostEx"/> for this purpose.</note></remarks>
        </member>
        <member name="T:Tektosyne.Windows.ComponentControl">
            <summary>
            Provides a <see cref="T:System.Windows.Forms.Control"/> with a <see cref="T:System.ComponentModel.Container"/> for components.</summary>
            <remarks><para>
            <b>ComponentControl</b> automates the disposal of non-<see cref="T:System.Windows.Forms.Control"/> components by
            exposing a <see cref="P:Tektosyne.Windows.ComponentControl.Components"/> property to which they can be attached.
            </para><para>
            Additional properties handle the automatic creation and disposal of three frequently used
            components: <see cref="P:Tektosyne.Windows.ComponentControl.ErrorProvider"/>, <see cref="P:Tektosyne.Windows.ComponentControl.HelpProvider"/>, and <see cref="P:Tektosyne.Windows.ComponentControl.ToolTip"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.ComponentControl.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:Tektosyne.Windows.ComponentControl"/> and
            optionally releases the managed resources.</summary>
            <param name="disposing">
            <c>true</c> to release both managed and unmanaged resources; <c>false</c> to release
            only unmanaged resources.</param>
            <remarks>
            <b>Dispose</b> invokes <see cref="M:System.ComponentModel.Container.Dispose"/> on the associated <see cref="P:Tektosyne.Windows.ComponentControl.Components"/> if <paramref name="disposing"/> is <c>true</c>. Please refer to <see cref="M:System.Windows.Forms.Control.Dispose(System.Boolean)"/> for more details.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.ComponentControl.Components">
            <summary>
            Gets a <see cref="T:System.ComponentModel.Container"/> object to which components can be attached.</summary>
            <value>
            The <see cref="T:System.ComponentModel.Container"/> object managing components for the <see cref="T:Tektosyne.Windows.ComponentControl"/>.</value>
            <remarks><para>
            Call <see cref="M:System.ComponentModel.Container.Add(System.ComponentModel.IComponent)"/> to attach any desired <see cref="T:System.ComponentModel.Component"/> to the
            <b>Components</b> container. All attached components are automatically disposed of when
            <see cref="M:System.Windows.Forms.Control.Dispose(System.Boolean)"/> is invoked on the <see cref="T:Tektosyne.Windows.ComponentControl"/>. This
            mimics the automatic disposal of <see cref="T:System.Windows.Forms.Control"/> objects attached to <see cref="P:System.Windows.Forms.Control.Controls"/>.
            </para><para>
            The implementation of <b>Components</b> is identical to the one automatically generated
            by Visual Studio, except that the designer-generated code does not provide a public
            property to access the <see cref="T:System.ComponentModel.Container"/> object.</para></remarks>
        </member>
        <member name="P:Tektosyne.Windows.ComponentControl.ErrorProvider">
            <summary>
            Gets the <see cref="T:System.Windows.Forms.ErrorProvider"/> associated with the <see cref="T:Tektosyne.Windows.ComponentControl"/>.</summary>
            <value>
            The <see cref="T:System.Windows.Forms.ErrorProvider"/> associated with the <see cref="T:Tektosyne.Windows.ComponentControl"/>.</value>
            <remarks>
            When this property is first accessed, a new <see cref="T:System.Windows.Forms.ErrorProvider"/> component is created and added to the <see cref="P:Tektosyne.Windows.ComponentControl.Components"/> container for automatic disposal. The created <b>ErrorProvider</b>
            is cached and returned on subsequent accesses.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.ComponentControl.HelpProvider">
            <summary>
            Gets the <see cref="T:System.Windows.Forms.HelpProvider"/> associated with the <see cref="T:Tektosyne.Windows.ComponentControl"/>.</summary>
            <value>
            The <see cref="T:System.Windows.Forms.HelpProvider"/> associated with the <see cref="T:Tektosyne.Windows.ComponentControl"/>.</value>
            <remarks>
            When this property is first accessed, a new <see cref="T:System.Windows.Forms.HelpProvider"/> component is created and added to the <see cref="P:Tektosyne.Windows.ComponentControl.Components"/> container for automatic disposal. The created <b>HelpProvider</b> is
            cached and returned on subsequent accesses.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.ComponentControl.ToolTip">
            <summary>
            Gets the <see cref="T:System.Windows.Forms.ToolTip"/> associated with the <see cref="T:Tektosyne.Windows.ComponentControl"/>.</summary>
            <value>
            The <see cref="T:System.Windows.Forms.ToolTip"/> associated with the <see cref="T:Tektosyne.Windows.ComponentControl"/>.</value>
            <remarks>
            When this property is first accessed, a new <see cref="T:System.Windows.Forms.ToolTip"/>
            component is created and added to the <see cref="P:Tektosyne.Windows.ComponentControl.Components"/> container for automatic
            disposal. The created <b>ToolTip</b> is cached and returned on subsequent accesses.
            </remarks>
        </member>
        <member name="M:Tektosyne.Windows.NumericUpDownHost.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.NumericUpDownHost"/> class.</summary>
            <remarks>
            This constructor creates a new <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/> with the associated <see cref="P:Tektosyne.Windows.ComponentControl.ErrorProvider"/> and <see cref="P:Tektosyne.Windows.ComponentControl.ToolTip"/>
            components.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.NumericUpDownHost.OnGotFocus(System.EventArgs)">
            <summary>
            Raises and handles the <see cref="E:System.Windows.Forms.Control.GotFocus"/> event.</summary>
            <param name="args">
            An <see cref="T:System.EventArgs"/> object containing event data.</param>
            <remarks><para>
            <b>OnGotFocus</b> first raises the <see cref="E:System.Windows.Forms.Control.GotFocus"/> event by calling the
            base class implementation of <see cref="M:System.Windows.Forms.Control.OnGotFocus(System.EventArgs)"/>.
            </para><para>
            <b>OnGotFocus</b> then handles the <b>GotFocus</b> event by invoking <see cref="M:System.Windows.Forms.Control.Focus"/> on the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.NumericUpDownHost.OnLayout(System.Windows.Forms.LayoutEventArgs)">
            <summary>
            Raises and handles the <see cref="E:System.Windows.Forms.Control.Layout"/> event.</summary>
            <param name="args">
            A <see cref="T:System.Windows.Forms.LayoutEventArgs"/> object containing event data.</param>
            <remarks><para>
            <b>OnLayout</b> first raises the <see cref="E:System.Windows.Forms.Control.Layout"/> event by calling the base
            class implementation of <see cref="M:System.Windows.Forms.Control.OnLayout(System.Windows.Forms.LayoutEventArgs)"/>.
            </para><para>
            <b>OnLayout</b> then handles the <b>Layout</b> event by performing the following
            actions:
            </para><list type="number"><item>
            If the <see cref="P:System.Windows.Forms.Control.Width"/> of the <see cref="T:Tektosyne.Windows.NumericUpDownHost"/> is still zero,
            set it to the <see cref="P:System.Windows.Forms.Control.Width"/> of the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.
            </item><item>
            Set the <see cref="P:System.Windows.Forms.Control.Width"/> of the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/> to that of the
            <see cref="T:Tektosyne.Windows.NumericUpDownHost"/> minus the icon width of the associated <see cref="P:Tektosyne.Windows.ComponentControl.ErrorProvider"/>.
            </item><item>
            Set the <see cref="P:System.Windows.Forms.Control.Height"/> of the <see cref="T:Tektosyne.Windows.NumericUpDownHost"/> to that of
            the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.
            </item></list><para>
            We always use the hosted control's height because a <see cref="T:System.Windows.Forms.NumericUpDown"/> control
            has a fixed height based on the current <see cref="P:System.Windows.Forms.Control.Font"/>.</para></remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownHost.Accelerations">
            <summary>
            Gets the collection of sorted acceleration objects for the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.
            </summary>
            <value>
            A <see cref="T:System.Windows.Forms.NumericUpDownAccelerationCollection"/> containing the <see cref="T:System.Windows.Forms.NumericUpDownAcceleration"/> objects for the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.</value>
            <remarks>
            Please refer to <see cref="P:System.Windows.Forms.NumericUpDown.Accelerations"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownHost.BorderStyle">
            <summary>
            Gets or sets the border style for the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.</summary>
            <value>
            A <see cref="T:System.Windows.Forms.BorderStyle"/> value indicating the border style of
            the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>. The default is <see cref="F:System.Windows.Forms.BorderStyle.Fixed3D"/>.</value>
            <remarks>
            Please refer to <see cref="P:System.Windows.Forms.UpDownBase.BorderStyle"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownHost.DecimalPlaces">
            <summary>
            Gets or sets the number of decimal places to display in the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.
            </summary>
            <value>
            The number of decimal places to display in the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>. The default
            is zero.</value>
            <remarks>
            Please refer to <see cref="P:System.Windows.Forms.NumericUpDown.DecimalPlaces"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownHost.Hexadecimal">
            <summary>
            Gets or sets a value indicating whether the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/> should display
            its value in hexadecimal format.</summary>
            <value>
            <c>true</c> if the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/> should display its value in hexadecimal
            format; otherwise, <c>false</c>. The default is <c>false</c>.</value>
            <remarks>
            Please refer to <see cref="P:System.Windows.Forms.NumericUpDown.Hexadecimal"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownHost.HostedControl">
            <summary>
            Gets the <see cref="T:Tektosyne.Windows.NumericUpDownEx"/> control that is hosted by the <see cref="T:Tektosyne.Windows.NumericUpDownHost"/> control.</summary>
            <value>
            The <see cref="T:Tektosyne.Windows.NumericUpDownEx"/> control that is hosted by the <see cref="T:Tektosyne.Windows.NumericUpDownHost"/> control.</value>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownHost.Increment">
            <summary>
            Gets or sets the value by which the arrow buttons increment or decrement the value of
            the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.</summary>
            <value>
            The value by which the arrow buttons increment or decrement the value of the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>. The default is one.</value>
            <remarks>
            Please refer to <see cref="P:System.Windows.Forms.NumericUpDown.Increment"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownHost.Maximum">
            <summary>
            Gets or sets the maximum value for the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.</summary>
            <value>
            The maximum value for the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>. The default is 100.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Windows.Forms.NumericUpDown.Maximum"/> for details.
            </para><para>
            Setting this property also calls <see cref="M:Tektosyne.Windows.NumericUpDownEx.UpdateToolTip"/> on the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.</para></remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownHost.Minimum">
            <summary>
            Gets or sets the minimum value for the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.</summary>
            <value>
            The minimum value for the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>. The default is zero.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Windows.Forms.NumericUpDown.Minimum"/> for details.
            </para><para>
            Setting this property also calls <see cref="M:Tektosyne.Windows.NumericUpDownEx.UpdateToolTip"/> on the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.</para></remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownHost.ReadOnly">
            <summary>
            Gets or sets a value indicating whether the value of the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/> can
            be changed only with the arrow buttons.</summary>
            <value>
            <c>true</c> if the value of the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/> can be changed only with the
            arrow buttons; otherwise, <c>false</c>. The default is <c>false</c>.</value>
            <remarks>
            Please refer to <see cref="P:System.Windows.Forms.UpDownBase.ReadOnly"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownHost.TextAlign">
            <summary>
            Gets or sets the alignment of text within the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.</summary>
            <value>
            A <see cref="T:System.Windows.Forms.HorizontalAlignment"/> value indicating the alignment of text within the
            <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>. The default is <see cref="F:System.Windows.Forms.HorizontalAlignment.Left"/>.
            </value>
            <remarks>
            Please refer to <see cref="P:System.Windows.Forms.UpDownBase.TextAlign"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownHost.ThousandsSeparator">
            <summary>
            Gets or sets a value indicating whether a thousands separator is displayed in the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.</summary>
            <value>
            <c>true</c> if a thousands separator is displayed in the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>;
            otherwise, <c>false</c>. The default is <c>false</c>.</value>
            <remarks>
            Please refer to <see cref="P:System.Windows.Forms.NumericUpDown.ThousandsSeparator"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownHost.UpDownAlign">
            <summary>
            Gets or sets the alignment of the arrow buttons for the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.
            </summary>
            <value>
            A <see cref="T:System.Windows.Forms.LeftRightAlignment"/> value indicating the alignment of arrow buttons for
            the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>. The default is <see cref="F:System.Windows.Forms.HorizontalAlignment.Right"/>.
            </value>
            <remarks>
            Please refer to <see cref="P:System.Windows.Forms.UpDownBase.UpDownAlign"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.NumericUpDownHost.Value">
            <summary>
            Gets or sets the numeric value shown in the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>.</summary>
            <value>
            The numeric value shown in the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/>. The default is zero.</value>
            <remarks>
            Please refer to <see cref="P:System.Windows.Forms.NumericUpDown.Value"/> for details.</remarks>
        </member>
        <member name="E:Tektosyne.Windows.NumericUpDownHost.ValueChanged">
            <summary>
            Occurs when the value of the <see cref="P:Tektosyne.Windows.NumericUpDownHost.HostedControl"/> has been changed.</summary>
            <remarks>
            Please refer to <see cref="E:System.Windows.Forms.NumericUpDown.ValueChanged"/> for details.</remarks>
        </member>
        <member name="T:Tektosyne.Win32Api.MapiRecipClass">
            <summary>
            Defines recipient classes for MAPI messages.</summary>
            <remarks>
            <b>MapiRecipClass</b> defines all possible values for the <see cref="F:Tektosyne.Win32Api.MapiRecipDesc.ulRecipClass"/> field of the <see cref="T:Tektosyne.Win32Api.MapiRecipDesc"/> structure.
            </remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiRecipClass.MAPI_ORIG">
            <summary>
            Indicates the original sender of the message.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiRecipClass.MAPI_TO">
            <summary>
            Indicates a primary message recipient.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiRecipClass.MAPI_CC">
            <summary>
            Indicates a recipient of a message copy.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiRecipClass.MAPI_BCC">
            <summary>
            Indicates a recipient of a blind copy.</summary>
        </member>
        <member name="T:Tektosyne.Win32Api.MapiFlags">
            <summary>
            Defines flags supplied to Simple MAPI calls.</summary>
            <remarks>
            <b>MapiFlags</b> defines all flag values that can be supplied to Simple MAPI function calls.
            Bitwise combinations are possible.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_LOGON_UI">
            <summary>
            A dialog should be displayed to prompt the user to log on if required.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_NEW_SESSION">
            <summary>
            An attempt should be made to create a new session rather than acquire the environment's
            shared session.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_DIALOG">
            <summary>
            A dialog should be displayed to prompt the user for recipients and other sending
            options.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_EXTENDED">
            <summary>
            Log on with extended capabilities.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_UNREAD_ONLY">
            <summary>
            Only unread messages of the specified type should be enumerated.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_USE_DEFAULT">
            <summary>
            The messaging subsystem should substitute the profile name of the default profile.
            </summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_ENVELOPE_ONLY">
            <summary>
            Only message headers should be retrieved.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_PEEK">
            <summary>
            The retrieved messages should not be marked as read.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_GUARANTEE_FIFO">
            <summary>
            The message identifiers returned should be in the order of time received.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_BODY_AS_FILE">
            <summary>
            The message text should be sent as a file attachment.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_AB_NOMODIFY">
            <summary>
            The address book dialog should be read-only, prohibiting changes.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_SUPPRESS_ATTACH">
            <summary>
            The file attachments of incoming messages should not be copied.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_FORCE_DOWNLOAD">
            <summary>
            An attempt should be made to download all of the user's messages before returning.
            </summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_LONG_MSGID">
            <summary>
            The returned message identifier can be as long as 512 characters.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFlags.MAPI_PASSWORD_UI">
            <summary>
            A dialog should be displayed to prompt the user for the profile password.</summary>
        </member>
        <member name="T:Tektosyne.Win32Api.MapiFileDesc">
            <summary>
            Contains information about a file containing a message attachment stored as a temporary
            file.</summary>
            <remarks><para>
            The temporary file can contain a static OLE object, an embedded OLE object, an embedded
            message, and other types of files.
            </para><para>
            This type mirrors the <b>MapiFileDesc</b> (Simple MAPI) structure defined in the Platform
            SDK. Please refer to the Microsoft Platform SDK documentation for details.</para></remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFileDesc.ulReserved">
            <summary>
            Reserved; must be zero.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFileDesc.flFlags">
            <summary>
            A bitmask of attachment flags.</summary>
            <remarks><para>
            The following flags can be set:
            </para><list type="bullet"><item>
            <term><see cref="F:Tektosyne.Win32Api.MapiFileFlags.MAPI_OLE"/></term>
            <description>The attachment is an OLE object. If <b>MAPI_OLE_STATIC</b> is also set, the
            attachment is a static OLE object. If <b>MAPI_OLE_STATIC</b> is not set, the attachment
            is an embedded OLE object.</description>
            </item><item>
            <term><see cref="F:Tektosyne.Win32Api.MapiFileFlags.MAPI_OLE_STATIC"/></term>
            <description>The attachment is a static OLE object.</description>
            </item></list><para>
            If neither flag is set, the attachment is treated as a data file.</para></remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFileDesc.nPosition">
            <summary>
            An integer used to indicate where in the message text to render the attachment.
            </summary>
            <remarks>
            Attachments replace the character found at a certain position in the message text. That
            is, attachments replace the character in the <see cref="T:Tektosyne.Win32Api.MapiMessage"/> structure field
            <c>NoteText[nPosition]</c>. A value of – 1 (0xFFFFFFFF) means the attachment position is
            not indicated; the client application will have to provide a way for the user to access
            the attachment.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFileDesc.lpszPathName">
            <summary>
            The fully qualified path of the attached file.</summary>
            <remarks>
            This path should include the disk drive letter and directory name.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFileDesc.lpszFileName">
            <summary>
            The attachment filename seen by the recipient.</summary>
            <remarks>
            <b>lpszFileName</b> may differ from the filename in the <see cref="F:Tektosyne.Win32Api.MapiFileDesc.lpszPathName"/>
            member if temporary files are being used. If the <b>lpszFileName</b> member is a null
            reference or an empty string, the filename from <see cref="F:Tektosyne.Win32Api.MapiFileDesc.lpszPathName"/> is used.
            </remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFileDesc.lpFileType">
            <summary>
            A pointer to the attachment file type.</summary>
            <remarks>
            The attachment file type can be represented with a <see cref="T:Tektosyne.Win32Api.MapiFileTagExt"/>
            structure. A value of <see cref="F:System.IntPtr.Zero"/> indicates an unknown file type or a file
            type determined by the operating system.</remarks>
        </member>
        <member name="T:Tektosyne.Geometry.IPlanarAgent">
            <summary>
            Provides an object that can navigate locations in two-dimensional space.</summary>
            <remarks><para>
            <b>IPlanarAgent</b> provides a mobile object that can navigate locations which are uniquely
            identified by <see cref="T:System.Drawing.Point"/> values. Locations and their navigable connections are
            typically defined by an instance of the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> interface.
            </para><para>
            The <b>IPlanarAgent</b> and <b>IPlanarGraph</b> interfaces allow clients to use the generic
            search algorithms <see cref="T:Tektosyne.Geometry.AStar"/> and <see cref="T:Tektosyne.Geometry.Coverage"/> with application-specific
            graphs and agents.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.IPlanarAgent.CanMakeStep(System.Drawing.Point,System.Drawing.Point)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> can move from one specified location
            to another neighboring location.</summary>
            <param name="source">
            The coordinates of the location where the move starts.</param>
            <param name="target">
            The coordinates of the location where the move ends. This location must be a neighbor of
            <paramref name="source"/>.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> can move from <paramref name="source"/> to
            <paramref name="target"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentException">
            <paramref name="source"/> and <paramref name="target"/> do not represent valid
            neighboring locations.</exception>
            <remarks><para>
            <b>CanMakeStep</b> should only consider whether the <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> could
            move to the specified <paramref name="target"/> location <em>if</em> it were already
            placed on the specified <paramref name="source"/> location.
            </para><para>
            <b>CanMakeStep</b> should <em>not</em> consider whether the <b>IPlanarAgent</b> could
            reach the <paramref name="source"/> or <paramref name="target"/> location from its
            actual present location, if any.
            </para><para>
            <b>CanMakeStep</b> should succeed if the <b>PlanarAgent</b> could occupy <paramref name="target"/> either temporarily or permanently. Use <see cref="M:Tektosyne.Geometry.IPlanarAgent.CanOccupy(System.Drawing.Point)"/> to impose
            additional restrictions on stopping a movement at specific locations.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.IPlanarAgent.CanOccupy(System.Drawing.Point)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> can permanently occupy the specified
            target location.</summary>
            <param name="target">
            The coordinates of the location to occupy.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> can permanently occupy <paramref name="target"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentException">
            <paramref name="target"/> does not represent a valid location.</exception>
            <remarks><para>
            <b>CanOccupy</b> should consider whether the <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> could
            <em>permanently</em> occupy the specified <paramref name="target"/> location. Assuming
            that the <b>IPlanarAgent</b> has already reached <paramref name="target"/>,
            <b>CanOccupy</b> determines whether movement could stop at this location.
            </para><para>
            <b>CanOccupy</b> should <em>not</em> consider whether the <b>IPlanarAgent</b> could
            temporarily occupy <paramref name="target"/> during a continuing multi-step movement, or
            whether <paramref name="target"/> could be reached at all from any other location.
            </para><para>
            The default implementation of <b>CanOccupy</b> should simply return <c>true</c>.
            Pathfinding algorithms always specify a <paramref name="target"/> location for which
            <see cref="M:Tektosyne.Geometry.IPlanarAgent.CanMakeStep(System.Drawing.Point,System.Drawing.Point)"/> has already succeeded, so you should return <c>false</c> only
            if you wish to specifically prevent the <b>IPlanarAgent</b> from ending a path on the
            <paramref name="target"/> location.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.IPlanarAgent.GetStepCost(System.Drawing.Point,System.Drawing.Point)">
            <summary>
            Returns the cost for moving the <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> from one specified location
            to another neighboring location.</summary>
            <param name="source">
            The coordinates of the location where the move starts.</param>
            <param name="target">
            The coordinates of the location where the move ends. This location must be a neighbor of
            <paramref name="source"/>.</param>
            <returns>
            The cost for moving the <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> from <paramref name="source"/> to
            <paramref name="target"/>. This value must be positive.</returns>
            <exception cref="T:System.ArgumentException">
            <paramref name="source"/> and <paramref name="target"/> do not represent valid
            neighboring locations.</exception>
            <remarks><para>
            <b>GetStepCost</b> should not attempt to verify that the <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> can
            actually move from the specified <paramref name="source"/> location to the specified
            <paramref name="target"/> location. Clients should call <see cref="M:Tektosyne.Geometry.IPlanarAgent.CanMakeStep(System.Drawing.Point,System.Drawing.Point)"/> to
            ensure this condition.
            </para><para>
            Moreover, <b>GetStepCost</b> should compute the movement cost under the assumption that
            the <b>IPlanarAgent</b> were already placed on the <paramref name="source"/> location.
            The cost of reaching <paramref name="source"/> from its actual present location, if any,
            should be ignored.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.IPlanarAgent.IsNearTarget(System.Drawing.Point,System.Drawing.Point,System.Int32)">
            <summary>
            Determines whether the specified location is near enough to the specified target
            location to be considered equivalent.</summary>
            <param name="source">
            The coordinates of the location to consider.</param>
            <param name="target">
            The coordinates of the target location to reach.</param>
            <param name="distance">
            The distance, in movement steps, between <paramref name="source"/> and <paramref name="target"/>. This argument may be negative if the distance is unknown.</param>
            <returns>
            <c>true</c> if a movement towards <paramref name="target"/> should be considered
            complete when <paramref name="source"/> is reached; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentException">
            <paramref name="source"/> and <paramref name="target"/> do not represent valid
            locations.</exception>
            <remarks><para>
            A default implementation of <b>IsNearTarget</b> should merely check whether the
            specified <paramref name="source"/> and <paramref name="target"/> locations are
            identical. This can be accomplished by comparing the specified <paramref name="distance"/> to zero, assuming the caller provides a valid argument value.
            </para><para>
            More complex implementations might check for a maximum <paramref name="distance"/>, or
            examine application-specific properties of the <paramref name="source"/> and <paramref name="target"/> locations.</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.IPlanarAgent.RelaxedRange">
            <summary>
            Indicates whether the <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> can enter locations that exceed the
            maximum path cost for a movement.</summary>
            <value>
            <c>true</c> if the <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> may end a movement on a location that
            exceeds the maximum path cost for the movement; otherwise, <c>false</c>.</value>
            <remarks><para>
            The <see cref="T:Tektosyne.Geometry.AStar"/> and <see cref="T:Tektosyne.Geometry.Coverage"/> algorithms examine
            <b>RelaxedRange</b> when computing the results of the <see cref="M:Tektosyne.Geometry.AStar.GetLastNode(System.Int32)"/>
            and <see cref="M:Tektosyne.Geometry.Coverage.FindReachable(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Int32)"/> methods, respectively.
            </para><para>
            If <b>RelaxedRange</b> is <c>false</c>, the maximum path cost for a movement is the
            absolute upper limit that determines all reachable locations. The <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> will not enter any location whose total path cost exceeds this
            limit, as determined by <see cref="M:Tektosyne.Geometry.IPlanarAgent.GetStepCost(System.Drawing.Point,System.Drawing.Point)"/>.
            </para><para>
            If <b>RelaxedRange</b> is <c>true</c>, the <b>IPlanarAgent</b> can enter any location as
            the <em>final</em> step of a movement path, regardless of the actual <b>GetStepCost</b>
            result for that location, as long as the total path cost of all <em>previous</em> steps
            is less than the maximum path cost.</para></remarks>
        </member>
        <member name="T:Tektosyne.PropertyValueException">
            <summary>
            The exception that is thrown when a method call is invalid for the current value of a
            property.</summary>
            <remarks><para>
            <b>PropertyValueException</b> extends the <see cref="T:System.InvalidOperationException"/> class with
            two additional properties, <see cref="P:Tektosyne.PropertyValueException.PropertyName"/> and <see cref="P:Tektosyne.PropertyValueException.ActualValue"/>, holding the name and value of the property that
            caused the exception.
            </para><para>
            <b>PropertyValueException</b> duplicates the functionality of <see cref="T:System.ArgumentOutOfRangeException"/> for errors that are caused by invalid property values.
            In my experience, this is the most common reason for <b>InvalidOperationException</b>
            errors.</para></remarks>
        </member>
        <member name="M:Tektosyne.PropertyValueException.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.PropertyValueException"/> class.
            </overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.PropertyValueException"/> class with
            default properties.</summary>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.PropertyValueException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:Tektosyne.PropertyValueException.Message"/></term>
            <description>A localized message indicating an invalid property value.</description>
            </item><item>
            <term><see cref="P:Tektosyne.PropertyValueException.PropertyName"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:Tektosyne.PropertyValueException.ActualValue"/></term>
            <description>A null reference.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.PropertyValueException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.PropertyValueException"/> class with the
            name of the property that caused the exception.</summary>
            <param name="propertyName">
            The name of the property that caused the exception.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.PropertyValueException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:Tektosyne.PropertyValueException.ActualValue"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:Tektosyne.PropertyValueException.Message"/></term>
            <description>A localized message indicating an invalid property value.</description>
            </item><item>
            <term><see cref="P:Tektosyne.PropertyValueException.PropertyName"/></term>
            <description>The specified <paramref name="propertyName"/>.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.PropertyValueException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.PropertyValueException"/> class with the
            specified error message and with the previous exception that is the cause of this <see cref="T:Tektosyne.PropertyValueException"/>.</summary>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <param name="innerException">
            The previous <see cref="T:System.Exception"/> that is the cause of the current <see cref="T:Tektosyne.PropertyValueException"/>.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.PropertyValueException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>The specified <paramref name="innerException"/>.</description>
            </item><item>
            <term><see cref="P:Tektosyne.PropertyValueException.Message"/></term>
            <description>The specified <paramref name="message"/>.</description>
            </item><item>
            <term><see cref="P:Tektosyne.PropertyValueException.PropertyName"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:Tektosyne.PropertyValueException.ActualValue"/></term>
            <description>A null reference.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.PropertyValueException.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.PropertyValueException"/> class with the
            name of the property that caused the exception and with the specified error message.
            </summary>
            <param name="propertyName">
            The name of the property that caused the exception.</param>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.PropertyValueException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:Tektosyne.PropertyValueException.ActualValue"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:Tektosyne.PropertyValueException.Message"/></term>
            <description>The specified <paramref name="message"/>, followed by the specified
            <paramref name="propertyName"/>.</description>
            </item><item>
            <term><see cref="P:Tektosyne.PropertyValueException.PropertyName"/></term>
            <description>The specified <paramref name="propertyName"/>.</description>
            </item></list><para>
            If the specified <paramref name="message"/> is a null reference or an empty string, the
            <b>Message</b> property will contain a localized message indicating an invalid property
            value.</para></remarks>
        </member>
        <member name="M:Tektosyne.PropertyValueException.#ctor(System.String,System.Object,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.PropertyValueException"/> class with the
            name and value of the property that caused the exception and with the specified error
            message.</summary>
            <param name="propertyName">
            The name of the property that caused the exception.</param>
            <param name="actualValue">
            The value of the property that caused the exception.</param>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.PropertyValueException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:Tektosyne.PropertyValueException.ActualValue"/></term>
            <description>The specified <paramref name="actualValue"/>.</description>
            </item><item>
            <term><see cref="P:Tektosyne.PropertyValueException.Message"/></term>
            <description>The specified <paramref name="message"/>, followed by the specified
            <paramref name="propertyName"/> and <paramref name="actualValue"/>.</description>
            </item><item>
            <term><see cref="P:Tektosyne.PropertyValueException.PropertyName"/></term>
            <description>The specified <paramref name="propertyName"/>.</description>
            </item></list><para>
            If the specified <paramref name="message"/> is a null reference or an empty string, the
            <b>Message</b> property will contain a localized message indicating an invalid property
            value.</para></remarks>
        </member>
        <member name="M:Tektosyne.PropertyValueException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.PropertyValueException"/> class with
            serialized data.</summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> object providing serialized object data for the <see cref="T:Tektosyne.PropertyValueException"/>.</param>
            <param name="context">
            A <see cref="T:System.Runtime.Serialization.StreamingContext"/> object containing contextual information about the
            source or destination.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="info"/> is a null reference.</exception>
            <remarks><para>
            Please refer to <see cref="M:System.InvalidOperationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"/> for details.
            </para><para>
            The values of the <see cref="P:Tektosyne.PropertyValueException.ActualValue"/> and <see cref="P:Tektosyne.PropertyValueException.PropertyName"/> properties
            are deserialized from two additional fields, named "ActualValue" and "PropertyName".
            </para></remarks>
        </member>
        <member name="M:Tektosyne.PropertyValueException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> object with the data needed to serialize the
            exception.</summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> object that receives the serialized object data of
            the <see cref="T:Tektosyne.PropertyValueException"/>.</param>
            <param name="context">
            A <see cref="T:System.Runtime.Serialization.StreamingContext"/> object containing contextual information about the
            source or destination.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="info"/> is a null reference.</exception>
            <remarks><para>
            Please refer to <see cref="M:System.Exception.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"/> for details.
            </para><para>
            The values of the <see cref="P:Tektosyne.PropertyValueException.ActualValue"/> and <see cref="P:Tektosyne.PropertyValueException.PropertyName"/> properties
            are serialized to two additional fields, named "ActualValue" and "PropertyName".
            </para></remarks>
        </member>
        <member name="P:Tektosyne.PropertyValueException.ActualValue">
            <summary>
            Gets the value of the property that caused the exception.</summary>
            <value>
            The invalid property value that caused the <see cref="T:Tektosyne.PropertyValueException"/>.</value>
            <remarks>
            A <see cref="T:Tektosyne.PropertyValueException"/> should carry the invalid property value that
            caused the exception if it is relevant and cannot be inferred from the error <see cref="P:Tektosyne.PropertyValueException.Message"/>.</remarks>
        </member>
        <member name="P:Tektosyne.PropertyValueException.Message">
            <summary>
            Gets the error message, followed by the property name and value if available.</summary>
            <value>
            The error message passed to the constructor, followed by the <see cref="P:Tektosyne.PropertyValueException.PropertyName"/>
            if it is not a null reference or an empty string, and by the <see cref="P:Tektosyne.PropertyValueException.ActualValue"/>
            if it is not a null reference.</value>
            <remarks>
            The error message should be localized.</remarks>
        </member>
        <member name="P:Tektosyne.PropertyValueException.PropertyName">
            <summary>
            Gets the name of the property that caused the exception.</summary>
            <value>
            The name of the property that caused the <see cref="T:Tektosyne.PropertyValueException"/>.</value>
            <remarks>
            Every <see cref="T:Tektosyne.PropertyValueException"/> should carry the name of the property whose
            invalid value caused the exception. This name should not be localized.</remarks>
        </member>
        <member name="T:Tektosyne.Fortran">
            <summary>
            Provides functions defined by the Fortran 90 standard.</summary>
            <remarks>
            <b>Fortran</b> supplements the anemic standard <see cref="T:System.Math"/> class with methods
            that mimic selected Fortran 90 functions. All methods provide several overloads for
            different numeric types to avoid type casting.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.AInt(System.Decimal)">
            <overloads>
            Returns the number nearest the specified value, rounded towards zero.</overloads>
            <summary>
            Returns the whole <see cref="T:System.Decimal"/> number nearest the specified value, rounded
            towards zero.</summary>
            <param name="n">
            A <see cref="T:System.Decimal"/> number to round.</param>
            <returns>
            The whole <see cref="T:System.Decimal"/> number nearest <paramref name="n"/> whose absolute value
            is less than or equal to <paramref name="n"/>.</returns>
            <remarks>
            <b>AInt</b> effectively removes all fractional digits from the specified number, as if
            it was cast to an integer type.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.AInt(System.Double)">
            <summary>
            Returns the whole <see cref="T:System.Double"/> number nearest the specified value, rounded
            towards zero.</summary>
            <param name="n">
            A <see cref="T:System.Double"/> number to round.</param>
            <returns>
            The whole <see cref="T:System.Double"/> number nearest <paramref name="n"/> whose absolute value
            is less than or equal to <paramref name="n"/>.</returns>
            <remarks>
            <b>AInt</b> effectively removes all fractional digits from the specified number, as if
            it was cast to an integer type.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.AInt(System.Single)">
            <summary>
            Returns the whole <see cref="T:System.Single"/> number nearest the specified value, rounded
            towards zero.</summary>
            <param name="n">
            A <see cref="T:System.Single"/> number to round.</param>
            <returns>
            The whole <see cref="T:System.Single"/> number nearest <paramref name="n"/> whose absolute value
            is less than or equal to <paramref name="n"/>.</returns>
            <remarks>
            <b>AInt</b> effectively removes all fractional digits from the specified number, as if
            it was cast to an integer type.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.ANInt(System.Decimal)">
            <overloads>
            Returns the number nearest the specified value, using standard rounding.</overloads>
            <summary>
            Returns the whole <see cref="T:System.Decimal"/> number nearest the specified value, using
            standard rounding.</summary>
            <param name="n">
            A <see cref="T:System.Decimal"/> number to round.</param>
            <returns>
            The whole <see cref="T:System.Decimal"/> number nearest <paramref name="n"/>.</returns>
            <remarks>
            <b>ANInt</b> uses standard rounding, as specified by <see cref="F:System.MidpointRounding.AwayFromZero"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.ANInt(System.Double)">
            <summary>
            Returns the whole <see cref="T:System.Double"/> number nearest the specified value, using
            standard rounding.</summary>
            <param name="n">
            A <see cref="T:System.Double"/> number to round.</param>
            <returns>
            The whole <see cref="T:System.Double"/> number nearest <paramref name="n"/>.</returns>
            <remarks>
            <b>ANInt</b> uses standard rounding, as specified by <see cref="F:System.MidpointRounding.AwayFromZero"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.ANInt(System.Single)">
            <summary>
            Returns the whole <see cref="T:System.Single"/> number nearest the specified value, using
            standard rounding.</summary>
            <param name="n">
            A <see cref="T:System.Single"/> number to round.</param>
            <returns>
            The whole <see cref="T:System.Single"/> number nearest <paramref name="n"/>.</returns>
            <remarks>
            <b>ANInt</b> uses standard rounding, as specified by <see cref="F:System.MidpointRounding.AwayFromZero"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.ANInt(System.Decimal,System.Int32)">
            <summary>
            Returns the <see cref="T:System.Decimal"/> number with the specified precision nearest the
            specified value, using standard rounding.</summary>
            <param name="n">
            A <see cref="T:System.Decimal"/> number to round.</param>
            <param name="digits">
            The number of significant fractional digits (precision) in the return value.</param>
            <returns>
            The <see cref="T:System.Decimal"/> number nearest <paramref name="n"/> with a precision equal to
            <paramref name="digits"/>.</returns>
            <remarks><para>
            The <paramref name="digits"/> parameter specifies the number of significant fractional
            digits in the return value. If <paramref name="digits"/> is zero, a whole number is
            returned.
            </para><para>
            <b>ANInt</b> uses standard rounding, as specified by <see cref="F:System.MidpointRounding.AwayFromZero"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Fortran.ANInt(System.Double,System.Int32)">
            <summary>
            Returns the <see cref="T:System.Double"/> number with the specified precision nearest the
            specified value, using standard rounding.</summary>
            <param name="n">
            A <see cref="T:System.Double"/> number to round.</param>
            <param name="digits">
            The number of significant fractional digits (precision) in the return value.</param>
            <returns>
            The <see cref="T:System.Double"/> number nearest <paramref name="n"/> with a precision equal to
            <paramref name="digits"/>.</returns>
            <remarks><para>
            The <paramref name="digits"/> parameter specifies the number of significant fractional
            digits in the return value. If <paramref name="digits"/> is zero, a whole number is
            returned.
            </para><para>
            <b>ANInt</b> uses standard rounding, as specified by <see cref="F:System.MidpointRounding.AwayFromZero"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Fortran.ANInt(System.Single,System.Int32)">
            <summary>
            Returns the <see cref="T:System.Single"/> number with the specified precision nearest the
            specified value, using standard rounding.</summary>
            <param name="n">
            A <see cref="T:System.Single"/> number to round.</param>
            <param name="digits">
            The number of significant fractional digits (precision) in the return value.</param>
            <returns>
            The <see cref="T:System.Single"/> number nearest <paramref name="n"/> with a precision equal to
            <paramref name="digits"/>.</returns>
            <remarks><para>
            The <paramref name="digits"/> parameter specifies the number of significant fractional
            digits in the return value. If <paramref name="digits"/> is zero, a whole number is
            returned.
            </para><para>
            <b>ANInt</b> uses standard rounding, as specified by <see cref="F:System.MidpointRounding.AwayFromZero"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Ceiling(System.Decimal)">
            <overloads>
            Returns the <see cref="T:System.Int32"/> number nearest the specified value, rounded towards
            positive infinity.</overloads>
            <summary>
            Returns the <see cref="T:System.Int32"/> number nearest the specified <see cref="T:System.Decimal"/>
            value, rounded towards positive infinity.</summary>
            <param name="n">
            A <see cref="T:System.Decimal"/> number to round.</param>
            <returns>
            The <see cref="T:System.Int32"/> number nearest <paramref name="n"/>.</returns>
            <remarks>
            <b>Ceiling</b> is identical to <see cref="M:System.Decimal.Ceiling(System.Decimal)"/>, except that it returns an
            <see cref="T:System.Int32"/> number.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Ceiling(System.Double)">
            <summary>
            Returns the <see cref="T:System.Int32"/> number nearest the specified <see cref="T:System.Double"/> value,
            rounded towards positive infinity.</summary>
            <param name="n">
            A <see cref="T:System.Double"/> number to round.</param>
            <returns>
            The <see cref="T:System.Int32"/> number nearest <paramref name="n"/>.</returns>
            <remarks>
            <b>Ceiling</b> is identical to <see cref="M:System.Math.Ceiling(System.Decimal)"/>, except that it returns an
            <see cref="T:System.Int32"/> number.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Ceiling(System.Single)">
            <summary>
            Returns the <see cref="T:System.Int32"/> number nearest the specified <see cref="T:System.Single"/> value,
            rounded towards positive infinity.</summary>
            <param name="n">
            A <see cref="T:System.Single"/> number to round.</param>
            <returns>
            The <see cref="T:System.Int32"/> number nearest <paramref name="n"/>.</returns>
            <remarks>
            <b>Ceiling</b> is identical to <see cref="M:System.Math.Ceiling(System.Decimal)"/>, except that it returns an
            <see cref="T:System.Int32"/> number.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Floor(System.Decimal)">
            <overloads>
            Returns the <see cref="T:System.Int32"/> number nearest the specified value, rounded towards
            negative infinity.</overloads>
            <summary>
            Returns the <see cref="T:System.Int32"/> number nearest the specified <see cref="T:System.Decimal"/>
            value, rounded towards negative infinity.</summary>
            <param name="n">
            A <see cref="T:System.Decimal"/> number to round.</param>
            <returns>
            The <see cref="T:System.Int32"/> number nearest <paramref name="n"/>.</returns>
            <remarks>
            <b>Floor</b> is identical to <see cref="M:System.Math.Floor(System.Decimal)"/>, except that it returns an <see cref="T:System.Int32"/> number.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Floor(System.Double)">
            <summary>
            Returns the <see cref="T:System.Int32"/> number nearest the specified <see cref="T:System.Double"/> value,
            rounded towards negative infinity.</summary>
            <param name="n">
            A <see cref="T:System.Double"/> number to round.</param>
            <returns>
            The <see cref="T:System.Int32"/> number nearest <paramref name="n"/>.</returns>
            <remarks>
            <b>Floor</b> is identical to <see cref="M:System.Math.Floor(System.Decimal)"/>, except that it returns an <see cref="T:System.Int32"/> number.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Floor(System.Single)">
            <summary>
            Returns the <see cref="T:System.Int32"/> number nearest the specified <see cref="T:System.Single"/> value,
            rounded towards negative infinity.</summary>
            <param name="n">
            A <see cref="T:System.Single"/> number to round.</param>
            <returns>
            The <see cref="T:System.Int32"/> number nearest <paramref name="n"/>.</returns>
            <remarks>
            <b>Floor</b> is identical to <see cref="M:System.Math.Floor(System.Decimal)"/>, except that it returns an <see cref="T:System.Int32"/> number.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Max(System.Decimal[])">
            <overloads>
            Returns the largest of the specified <see cref="T:System.Array"/> of numbers.</overloads>
            <summary>
            Returns the largest of the specified <see cref="T:System.Array"/> of <see cref="T:System.Decimal"/>
            numbers.</summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Decimal"/> numbers to compare with each other.
            </param>
            <returns>
            The largest <see cref="T:System.Decimal"/> number found in <paramref name="array"/>.</returns>
            <remarks>
            <b>Max</b> returns <see cref="F:System.Decimal.MinValue"/> if <paramref name="array"/> is empty.
            </remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Max(System.Double[])">
            <summary>
            Returns the largest of the specified <see cref="T:System.Array"/> of <see cref="T:System.Double"/>
            numbers.</summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Double"/> numbers to compare with each other.
            </param>
            <returns>
            The largest <see cref="T:System.Double"/> number found in <paramref name="array"/>.</returns>
            <remarks>
            <b>Max</b> returns <see cref="F:System.Double.MinValue"/> if <paramref name="array"/> is empty.
            </remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Max(System.Single[])">
            <summary>
            Returns the largest of the specified <see cref="T:System.Array"/> of <see cref="T:System.Single"/>
            numbers.</summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Single"/> numbers to compare with each other.
            </param>
            <returns>
            The largest <see cref="T:System.Single"/> number found in <paramref name="array"/>.</returns>
            <remarks>
            <b>Max</b> returns <see cref="F:System.Single.MinValue"/> if <paramref name="array"/> is empty.
            </remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Max(System.Int32[])">
            <summary>
            Returns the largest of the specified <see cref="T:System.Array"/> of <see cref="T:System.Int32"/> numbers.
            </summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Int32"/> numbers to compare with each other.
            </param>
            <returns>
            The largest <see cref="T:System.Int32"/> number found in <paramref name="array"/>.</returns>
            <remarks>
            <b>Max</b> returns <see cref="F:System.Int32.MinValue"/> if <paramref name="array"/> is empty.
            </remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Max(System.Int64[])">
            <summary>
            Returns the largest of the specified <see cref="T:System.Array"/> of <see cref="T:System.Int64"/> numbers.
            </summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Int64"/> numbers to compare with each other.
            </param>
            <returns>
            The largest <see cref="T:System.Int64"/> number found in <paramref name="array"/>.</returns>
            <remarks>
            <b>Max</b> returns <see cref="F:System.Int64.MinValue"/> if <paramref name="array"/> is empty.
            </remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Min(System.Decimal[])">
            <overloads>
            Returns the smallest of the specified <see cref="T:System.Array"/> of numbers.</overloads>
            <summary>
            Returns the smallest of the specified <see cref="T:System.Array"/> of <see cref="T:System.Decimal"/>
            numbers.</summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Decimal"/> numbers to compare with each other.
            </param>
            <returns>
            The smallest <see cref="T:System.Decimal"/> number found in <paramref name="array"/>.</returns>
            <remarks>
            <b>Min</b> returns <see cref="F:System.Decimal.MaxValue"/> if <paramref name="array"/> is empty.
            </remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Min(System.Double[])">
            <summary>
            Returns the smallest of the specified <see cref="T:System.Array"/> of <see cref="T:System.Double"/>
            numbers.</summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Double"/> numbers to compare with each other.
            </param>
            <returns>
            The smallest <see cref="T:System.Double"/> number found in <paramref name="array"/>.</returns>
            <remarks>
            <b>Min</b> returns <see cref="F:System.Double.MaxValue"/> if <paramref name="array"/> is empty.
            </remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Min(System.Single[])">
            <summary>
            Returns the smallest of the specified <see cref="T:System.Array"/> of <see cref="T:System.Single"/>
            numbers.</summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Single"/> numbers to compare with each other.
            </param>
            <returns>
            The smallest <see cref="T:System.Single"/> number found in <paramref name="array"/>.</returns>
            <remarks>
            <b>Min</b> returns <see cref="F:System.Single.MaxValue"/> if <paramref name="array"/> is empty.
            </remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Min(System.Int32[])">
            <summary>
            Returns the smallest of the specified <see cref="T:System.Array"/> of <see cref="T:System.Int32"/>
            numbers.</summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Int32"/> numbers to compare with each other.
            </param>
            <returns>
            The smallest <see cref="T:System.Int32"/> number found in <paramref name="array"/>.</returns>
            <remarks>
            <b>Min</b> returns <see cref="F:System.Int32.MaxValue"/> if <paramref name="array"/> is empty.
            </remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Min(System.Int64[])">
            <summary>
            Returns the smallest of the specified <see cref="T:System.Array"/> of <see cref="T:System.Int64"/>
            numbers.</summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Int64"/> numbers to compare with each other.
            </param>
            <returns>
            The smallest <see cref="T:System.Int64"/> number found in <paramref name="array"/>.</returns>
            <remarks>
            <b>Min</b> returns <see cref="F:System.Int64.MaxValue"/> if <paramref name="array"/> is empty.
            </remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Modulo(System.Decimal,System.Decimal)">
            <overloads>
            Returns the first value modulo the second value.</overloads>
            <summary>
            Returns the first <see cref="T:System.Decimal"/> value modulo the second value.</summary>
            <param name="a">
            A <see cref="T:System.Decimal"/> number indicating the dividend.</param>
            <param name="p">
            A <see cref="T:System.Decimal"/> number indicating the divisor.</param>
            <returns>
            The <see cref="T:System.Decimal"/> number that equals <paramref name="a"/> modulo <paramref name="p"/>.</returns>
            <exception cref="T:System.DivideByZeroException">
            <paramref name="p"/> is zero.</exception>
            <remarks>
            <b>Modulo</b> returns <c>a - Floor(a/p) * p</c> whereas operator% returns <c>a - (int)
            (a/p) * p</c> which is actually the remainder. The result of <b>Modulo</b> is always in
            the interval [0, <paramref name="p"/>), regardless of the signs of <paramref name="a"/>
            and <paramref name="p"/>.</remarks>
            <example><para>
            The following table compares the results of <b>Modulo</b> and operator% for a dividend
            of 12, a divisor of 5, and all possible combinations of signs.
            </para><list type="table"><listheader>
            <term>Quotient</term>
            <description>Modulo</description><description>operator%</description>
            </listheader><item>
            <term>12 / 5</term><description>2</description><description>2</description>
            </item><item>
            <term>-12 / 5</term><description>3</description><description>-2</description>
            </item><item>
            <term>12 / -5</term><description>-3</description><description>2</description>
            </item><item>
            <term>-12 / -5</term><description>-2</description><description>-2</description>
            </item></list></example>
        </member>
        <member name="M:Tektosyne.Fortran.Modulo(System.Double,System.Double)">
            <summary>
            Returns the first <see cref="T:System.Double"/> value modulo the second value.</summary>
            <param name="a">
            A <see cref="T:System.Double"/> number indicating the dividend.</param>
            <param name="p">
            A <see cref="T:System.Double"/> number indicating the divisor.</param>
            <returns>
            The <see cref="T:System.Double"/> number that equals <paramref name="a"/> modulo <paramref name="p"/>.</returns>
            <exception cref="T:System.DivideByZeroException">
            <paramref name="p"/> is zero.</exception>
            <remarks>
            Please refer to <see cref="M:Tektosyne.Fortran.Modulo(System.Decimal,System.Decimal)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Modulo(System.Single,System.Single)">
            <summary>
            Returns the first <see cref="T:System.Single"/> value modulo the second value.</summary>
            <param name="a">
            A <see cref="T:System.Single"/> number indicating the dividend.</param>
            <param name="p">
            A <see cref="T:System.Single"/> number indicating the divisor.</param>
            <returns>
            The <see cref="T:System.Single"/> number that equals <paramref name="a"/> modulo <paramref name="p"/>.</returns>
            <exception cref="T:System.DivideByZeroException">
            <paramref name="p"/> is zero.</exception>
            <remarks>
            Please refer to <see cref="M:Tektosyne.Fortran.Modulo(System.Decimal,System.Decimal)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Modulo(System.Int32,System.Int32)">
            <summary>
            Returns the first <see cref="T:System.Int32"/> value modulo the second value.</summary>
            <param name="a">
            An <see cref="T:System.Int32"/> number indicating the dividend.</param>
            <param name="p">
            An <see cref="T:System.Int32"/> number indicating the divisor.</param>
            <returns>
            The <see cref="T:System.Int32"/> number that equals <paramref name="a"/> modulo <paramref name="p"/>.</returns>
            <exception cref="T:System.DivideByZeroException">
            <paramref name="p"/> is zero.</exception>
            <remarks>
            Please refer to <see cref="M:Tektosyne.Fortran.Modulo(System.Decimal,System.Decimal)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Modulo(System.Int64,System.Int64)">
            <summary>
            Returns the first <see cref="T:System.Int64"/> value modulo the second value.</summary>
            <param name="a">
            An <see cref="T:System.Int64"/> number indicating the dividend.</param>
            <param name="p">
            An <see cref="T:System.Int64"/> number indicating the divisor.</param>
            <returns>
            The <see cref="T:System.Int64"/> number that equals <paramref name="a"/> modulo <paramref name="p"/>.</returns>
            <exception cref="T:System.DivideByZeroException">
            <paramref name="p"/> is zero.</exception>
            <remarks>
            Please refer to <see cref="M:Tektosyne.Fortran.Modulo(System.Decimal,System.Decimal)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.NInt(System.Decimal)">
            <overloads>
            Returns the <see cref="T:System.Int32"/> number nearest the specified value, using standard
            rounding.</overloads>
            <summary>
            Returns the <see cref="T:System.Int32"/> number nearest the specified <see cref="T:System.Decimal"/>
            value, using standard rounding.</summary>
            <param name="n">
            A <see cref="T:System.Decimal"/> number to round.</param>
            <returns>
            The <see cref="T:System.Int32"/> number nearest <paramref name="n"/>.</returns>
            <remarks>
            <b>NInt</b> is the equivalent of casting the result of <see cref="M:Tektosyne.Fortran.ANInt(System.Decimal)"/> to <see cref="T:System.Int32"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.NInt(System.Double)">
            <summary>
            Returns the <see cref="T:System.Int32"/> number nearest the specified <see cref="T:System.Double"/> value,
            using standard rounding.</summary>
            <param name="n">
            A <see cref="T:System.Double"/> number to round.</param>
            <returns>
            The <see cref="T:System.Int32"/> number nearest <paramref name="n"/>.</returns>
            <remarks>
            <b>NInt</b> is the equivalent of casting the result of <see cref="M:Tektosyne.Fortran.ANInt(System.Decimal)"/> to <see cref="T:System.Int32"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.NInt(System.Single)">
            <summary>
            Returns the <see cref="T:System.Int32"/> number nearest the specified <see cref="T:System.Single"/> value,
            using standard rounding.</summary>
            <param name="n">
            A <see cref="T:System.Single"/> number to round.</param>
            <returns>
            The <see cref="T:System.Int32"/> number nearest <paramref name="n"/>.</returns>
            <remarks>
            <b>NInt</b> is the equivalent of casting the result of <see cref="M:Tektosyne.Fortran.ANInt(System.Decimal)"/> to <see cref="T:System.Int32"/> but executes faster.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Sign(System.Decimal,System.Decimal)">
            <overloads>
            Transfers the sign of one number to the absolute value of another.</overloads>
            <summary>
            Transfers the sign of one <see cref="T:System.Decimal"/> number to the absolute value of
            another.</summary>
            <param name="a">
            A <see cref="T:System.Decimal"/> number whose absolute value to combine with the sign of
            <paramref name="b"/>.</param>
            <param name="b">
            A <see cref="T:System.Decimal"/> number whose sign to combine with the absolute value of
            <paramref name="a"/>.</param>
            <returns>
            The <see cref="T:System.Decimal"/> number that equals the absolute value of <paramref name="a"/>
            with the sign of <paramref name="b"/>.</returns>
            <remarks>
            <b>Sign</b> assumes a positive sign if <paramref name="b"/> is zero, in accordance with
            the Fortran 90 standard.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Sign(System.Double,System.Double)">
            <summary>
            Transfers the sign of one <see cref="T:System.Double"/> number to the absolute value of another.
            </summary>
            <param name="a">
            A <see cref="T:System.Double"/> number whose absolute value to combine with the sign of <paramref name="b"/>.</param>
            <param name="b">
            A <see cref="T:System.Double"/> number whose sign to combine with the absolute value of <paramref name="a"/>.</param>
            <returns>
            The <see cref="T:System.Double"/> number that equals the absolute value of <paramref name="a"/>
            with the sign of <paramref name="b"/>.</returns>
            <remarks>
            <b>Sign</b> assumes a positive sign if <paramref name="b"/> is zero, in accordance with
            the Fortran 90 standard.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Sign(System.Single,System.Single)">
            <summary>
            Transfers the sign of one <see cref="T:System.Single"/> number to the absolute value of another.
            </summary>
            <param name="a">
            A <see cref="T:System.Single"/> number whose absolute value to combine with the sign of <paramref name="b"/>.</param>
            <param name="b">
            A <see cref="T:System.Single"/> number whose sign to combine with the absolute value of <paramref name="a"/>.</param>
            <returns>
            The <see cref="T:System.Single"/> number that equals the absolute value of <paramref name="a"/>
            with the sign of <paramref name="b"/>.</returns>
            <remarks>
            <b>Sign</b> assumes a positive sign if <paramref name="b"/> is zero, in accordance with
            the Fortran 90 standard.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Sum(System.Decimal[])">
            <overloads>
            Returns the sum of the specified <see cref="T:System.Array"/> of numbers.</overloads>
            <summary>
            Returns the sum of the specified <see cref="T:System.Array"/> of <see cref="T:System.Decimal"/> numbers.
            </summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Decimal"/> numbers to sum up.</param>
            <returns>
            The <see cref="T:System.Decimal"/> number that is the sum of all values in <paramref name="array"/>.</returns>
            <remarks>
            <b>Sum</b> returns zero if <paramref name="array"/> is empty.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Sum(System.Double[])">
            <summary>
            Returns the sum of the specified <see cref="T:System.Array"/> of <see cref="T:System.Double"/> numbers.
            </summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Double"/> numbers to sum up.</param>
            <returns>
            The <see cref="T:System.Double"/> number that is the sum of all values in <paramref name="array"/>.</returns>
            <remarks>
            <b>Sum</b> returns zero if <paramref name="array"/> is empty.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Sum(System.Single[])">
            <summary>
            Returns the sum of the specified <see cref="T:System.Array"/> of <see cref="T:System.Single"/> numbers.
            </summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Single"/> numbers to sum up.</param>
            <returns>
            The <see cref="T:System.Single"/> number that is the sum of all values in <paramref name="array"/>.</returns>
            <remarks>
            <b>Sum</b> returns zero if <paramref name="array"/> is empty.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Sum(System.Int32[])">
            <summary>
            Returns the sum of the specified <see cref="T:System.Array"/> of <see cref="T:System.Int32"/> numbers.
            </summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Int32"/> numbers to sum up.</param>
            <returns>
            The <see cref="T:System.Int32"/> number that is the sum of all values in <paramref name="array"/>.</returns>
            <remarks>
            <b>Sum</b> returns zero if <paramref name="array"/> is empty.</remarks>
        </member>
        <member name="M:Tektosyne.Fortran.Sum(System.Int64[])">
            <summary>
            Returns the sum of the specified <see cref="T:System.Array"/> of <see cref="T:System.Int64"/> numbers.
            </summary>
            <param name="array">
            The <see cref="T:System.Array"/> of <see cref="T:System.Int64"/> numbers to sum up.</param>
            <returns>
            The <see cref="T:System.Int64"/> number that is the sum of all values in <paramref name="array"/>.</returns>
            <remarks>
            <b>Sum</b> returns zero if <paramref name="array"/> is empty.</remarks>
        </member>
        <member name="T:Tektosyne.IO.RootedPath">
            <summary>
            Provides a file path that may be relative to a root folder.</summary>
            <remarks><para>
            <b>RootedPath</b> wraps a <see cref="P:Tektosyne.IO.RootedPath.RootFolder"/> and a file path that may be
            located below that root folder. The <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/> and <see cref="P:Tektosyne.IO.RootedPath.RelativePath"/> properties return different transformations of the wrapped
            file path, suitable either for I/O operations or for text display.
            </para><para>
            <b>AbsolutePath</b> automatically prepends <b>RootFolder</b> if the file path is specified
            as a relative path, and <b>RelativePath</b> automatically strips <b>RootFolder</b> if the
            current <b>AbsolutePath</b> is located below that folder. <b>RootedPath</b> does not check
            whether any of the specified folders and paths actually exist in the file system.
            </para><para>
            <b>RootedPath</b> is an immutable reference type, just like <see cref="T:System.String"/>. Property
            values are specified during construction and cannot be changed afterwards. The methods <see cref="M:Tektosyne.IO.RootedPath.Change(System.String)"/> and <see cref="M:Tektosyne.IO.RootedPath.Clear"/> return a new <b>RootedPath</b>
            instance with the desired property values, but leave the current instance unchanged.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.IO.RootedPath.#ctor(Tektosyne.IO.RootedPath)">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.IO.RootedPath"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.IO.RootedPath"/> class that is a shallow copy
            of the specified instance.</summary>
            <param name="path">
            The <see cref="T:Tektosyne.IO.RootedPath"/> object whose property values should be copied to the new
            instance.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="path"/> is a null reference.</exception>
            <remarks>
            This "copy constructor" does not need to perform a deep copy as all properties are
            backed by immutable <see cref="T:System.String"/> objects.</remarks>
        </member>
        <member name="M:Tektosyne.IO.RootedPath.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.IO.RootedPath"/> class with the specified root
            folder.</summary>
            <param name="rootFolder">
            The initial value for the <see cref="P:Tektosyne.IO.RootedPath.RootFolder"/> and <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/>
            properties.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="rootFolder"/> is not an absolute file path.</exception>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="rootFolder"/> is a null reference or an empty string.</exception>
            <remarks>
            If the specified <paramref name="rootFolder"/> does not end with a directory separator
            character, a single <see cref="F:System.IO.Path.DirectorySeparatorChar"/> is appended before the 
            value is assigned to the <see cref="P:Tektosyne.IO.RootedPath.RootFolder"/> property.</remarks>
        </member>
        <member name="M:Tektosyne.IO.RootedPath.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.IO.RootedPath"/> class with the specified root
            folder and current file path.</summary>
            <param name="rootFolder">
            The initial value for the <see cref="P:Tektosyne.IO.RootedPath.RootFolder"/> property.</param>
            <param name="filePath">
            An absolute or relative file path used to initialize the remaining properties. This
            argument may be a null reference or an empty string.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="rootFolder"/> is not an absolute file path.</exception>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="rootFolder"/> is a null reference or an empty string.</exception>
            <remarks><para>
            If the specified <paramref name="rootFolder"/> does not end with a directory separator
            character, a single <see cref="F:System.IO.Path.DirectorySeparatorChar"/> is appended before the 
            value is assigned to the <see cref="P:Tektosyne.IO.RootedPath.RootFolder"/> property.
            </para><para>
            If the specified <paramref name="filePath"/> is a null reference, an empty string, or an
            absolute file path that is equivalent to <paramref name="rootFolder"/>, <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/> is initialized to <paramref name="rootFolder"/>. This means that
            <see cref="P:Tektosyne.IO.RootedPath.RelativePath"/> will return an empty string.
            </para><para>
            If <paramref name="filePath"/> is an absolute file path that is <em>not</em> equivalent
            to <paramref name="rootFolder"/>, <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/> is initialized to <paramref name="filePath"/>. Otherwise, if <paramref name="filePath"/> is a relative file path,
            <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/>  is initialized to the combination of <paramref name="rootFolder"/> and <paramref name="filePath"/>. In either case, <see cref="P:Tektosyne.IO.RootedPath.RelativePath"/> will return <paramref name="filePath"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.IO.RootedPath.Change(System.String)">
            <summary>
            Changes the file path wrapped by the <see cref="T:Tektosyne.IO.RootedPath"/>.</summary>
            <param name="filePath">
            The absolute or relative file path to wrap.</param>
            <returns>
            A new <see cref="T:Tektosyne.IO.RootedPath"/> instance with the same <see cref="P:Tektosyne.IO.RootedPath.RootFolder"/> as this
            instance, and that wraps the specified <paramref name="filePath"/>.</returns>
            <remarks>
            <b>Change</b> has the same effect as <see cref="M:Tektosyne.IO.RootedPath.Clear"/> if the specified <paramref name="filePath"/> is a null reference, an empty string, or an absolute file path that is
            equivalent to <see cref="P:Tektosyne.IO.RootedPath.RootFolder"/>.</remarks>
        </member>
        <member name="M:Tektosyne.IO.RootedPath.Clear">
            <summary>
            Clears the file path wrapped by the <see cref="T:Tektosyne.IO.RootedPath"/>.</summary>
            <returns>
            A new <see cref="T:Tektosyne.IO.RootedPath"/> instance with the same <see cref="P:Tektosyne.IO.RootedPath.RootFolder"/> as this
            instance, and that wraps an empty file path.</returns>
        </member>
        <member name="M:Tektosyne.IO.RootedPath.GetHashCode">
            <summary>
            Returns the hash code for this <see cref="T:Tektosyne.IO.RootedPath"/> instance.</summary>
            <returns>
            An <see cref="T:System.Int32"/> hash code.</returns>
            <remarks>
            <b>GetHashCode</b> combines the results of <see cref="M:System.String.GetHashCode"/> for the <see cref="P:Tektosyne.IO.RootedPath.RootFolder"/> and <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/> properties.</remarks>
        </member>
        <member name="M:Tektosyne.IO.RootedPath.ToString">
            <summary>
            Returns a <see cref="T:System.String"/> that represents the <see cref="T:Tektosyne.IO.RootedPath"/>.</summary>
            <returns>
            The value of the <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/> property.</returns>
        </member>
        <member name="M:Tektosyne.IO.RootedPath.op_Equality(Tektosyne.IO.RootedPath,Tektosyne.IO.RootedPath)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.IO.RootedPath"/> instances have the same value.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.IO.RootedPath"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.IO.RootedPath"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.IO.RootedPath.Equals(Tektosyne.IO.RootedPath,Tektosyne.IO.RootedPath)"/> method to test
            the two <see cref="T:Tektosyne.IO.RootedPath"/> instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.IO.RootedPath.op_Inequality(Tektosyne.IO.RootedPath,Tektosyne.IO.RootedPath)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.IO.RootedPath"/> instances have different values.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.IO.RootedPath"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.IO.RootedPath"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is different from the value of
            <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.IO.RootedPath.Equals(Tektosyne.IO.RootedPath,Tektosyne.IO.RootedPath)"/> method to test
            the two <see cref="T:Tektosyne.IO.RootedPath"/> instances for value inequality.</remarks>
        </member>
        <member name="M:Tektosyne.IO.RootedPath.Clone">
            <summary>
            Creates a shallow copy of the <see cref="T:Tektosyne.IO.RootedPath"/>.</summary>
            <returns>
            A new <see cref="T:Tektosyne.IO.RootedPath"/> instance that is a shallow copy of the current instance.
            </returns>
            <remarks>
            <b>Clone</b> invokes the "copy constructor", <see cref="M:Tektosyne.IO.RootedPath.#ctor(Tektosyne.IO.RootedPath)"/>, to
            create a shallow copy of the current instance.</remarks>
        </member>
        <member name="M:Tektosyne.IO.RootedPath.Equals(System.Object)">
            <overloads>
            Determines whether two <see cref="T:Tektosyne.IO.RootedPath"/> instances have the same value.
            </overloads>
            <summary>
            Determines whether this <see cref="T:Tektosyne.IO.RootedPath"/> instance and a specified object, which
            must be a <see cref="T:Tektosyne.IO.RootedPath"/>, have the same value.</summary>
            <param name="obj">
            An <see cref="T:System.Object"/> to compare to this <see cref="T:Tektosyne.IO.RootedPath"/> instance.</param>
            <returns>
            <c>true</c> if <paramref name="obj"/> is another <see cref="T:Tektosyne.IO.RootedPath"/> instance and
            its value is the same as this instance; otherwise, <c>false</c>.</returns>
            <remarks>
            If the specified <paramref name="obj"/> is another <see cref="T:Tektosyne.IO.RootedPath"/> instance,
            or an instance of a derived class, <b>Equals</b> invokes the strongly-typed <see cref="M:Tektosyne.IO.RootedPath.Equals(Tektosyne.IO.RootedPath)"/> overload to test the two instances for value equality.
            </remarks>
        </member>
        <member name="M:Tektosyne.IO.RootedPath.Equals(Tektosyne.IO.RootedPath)">
            <summary>
            Determines whether this instance and a specified <see cref="T:Tektosyne.IO.RootedPath"/> have the same
            value.</summary>
            <param name="path">
            A <see cref="T:Tektosyne.IO.RootedPath"/> to compare to this instance.</param>
            <returns>
            <c>true</c> if the value of <paramref name="path"/> is the same as this instance;
            otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> compares the values of the <see cref="P:Tektosyne.IO.RootedPath.RootFolder"/> and <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/> properties of the two <see cref="T:Tektosyne.IO.RootedPath"/> instances to test
            for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.IO.RootedPath.Equals(Tektosyne.IO.RootedPath,Tektosyne.IO.RootedPath)">
            <summary>
            Determines whether two specified <see cref="T:Tektosyne.IO.RootedPath"/> instances have the same value.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.IO.RootedPath"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.IO.RootedPath"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> invokes the non-static <see cref="M:Tektosyne.IO.RootedPath.Equals(Tektosyne.IO.RootedPath)"/> overload to test
            the two <see cref="T:Tektosyne.IO.RootedPath"/> instances for value equality.</remarks>
        </member>
        <member name="P:Tektosyne.IO.RootedPath.AbsolutePath">
            <summary>
            Gets the absolute path wrapped by the <see cref="T:Tektosyne.IO.RootedPath"/>.</summary>
            <value>
            The absolute file path wrapped by this <see cref="T:Tektosyne.IO.RootedPath"/> object.</value>
            <remarks>
            <b>AbsolutePath</b> always returns a non-empty absolute file path. This property never
            changes once the object has been constructed.</remarks>
        </member>
        <member name="P:Tektosyne.IO.RootedPath.DirectoryName">
            <summary>
            Gets the directory information for <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/>.</summary>
            <value>
            The result of <see cref="M:System.IO.Path.GetDirectoryName(System.String)"/> for <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/>.
            </value>
            <remarks>
            <b>DirectoryName</b> never returns a null reference or an empty string since <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/> always contains a directory prefix.</remarks>
        </member>
        <member name="P:Tektosyne.IO.RootedPath.FileName">
            <summary>
            Gets the file name and extension of <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/>.</summary>
            <value>
            The result of <see cref="M:System.IO.Path.GetFileName(System.String)"/> for <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/>.</value>
            <remarks>
            <b>FileName</b> never returns a null reference, but it returns an empty string if <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/> ends with a directory or volume separator character.</remarks>
        </member>
        <member name="P:Tektosyne.IO.RootedPath.IsEmpty">
            <summary>
            Gets a value indicating whether the <see cref="T:Tektosyne.IO.RootedPath"/> wraps an empty relative
            path.</summary>
            <value>
            <c>true</c> if <see cref="P:Tektosyne.IO.RootedPath.RelativePath"/> is an empty string; otherwise, <c>false</c>.
            </value>
            <remarks>
            <b>IsEmpty</b> is <c>true</c> exactly if <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/> and <see cref="P:Tektosyne.IO.RootedPath.RootFolder"/> contain equivalent file paths. That is the case if both properties
            contain either identical string values or different string values that evaluate to the
            same file path.</remarks>
        </member>
        <member name="P:Tektosyne.IO.RootedPath.RelativePath">
            <summary>
            Gets the relative path wrapped by the <see cref="T:Tektosyne.IO.RootedPath"/>.</summary>
            <value>
            The value of the <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/> property, shortened by the value of the
            <see cref="P:Tektosyne.IO.RootedPath.RootFolder"/> property if the absolute path is located below that folder.
            </value>
            <remarks><para>
            <b>RelativePath</b> never returns a null reference, but it may return an empty string if
            <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/> and <see cref="P:Tektosyne.IO.RootedPath.RootFolder"/> contain equivalent file paths.
            </para><para>
            <b>RelativePath</b> calls <see cref="M:Tektosyne.IO.PathEx.Shorten(System.String,System.String)"/> to determine its value; please
            see there for further details on the path shortening algorithm.</para></remarks>
        </member>
        <member name="P:Tektosyne.IO.RootedPath.RootFolder">
            <summary>
            Gets the root folder for the <see cref="T:Tektosyne.IO.RootedPath"/>.</summary>
            <value>
            The root folder that is stripped from the <see cref="P:Tektosyne.IO.RootedPath.RelativePath"/> if the <see cref="P:Tektosyne.IO.RootedPath.AbsolutePath"/> is located below that folder.</value>
            <remarks>
            <b>RootFolder</b> always returns a non-empty absolute file path that ends with a
            directory separator character. This property never changes once the object has been
            constructed.</remarks>
        </member>
        <member name="T:Tektosyne.Geometry.Line">
            <summary>
            Represents a directed line in two-dimensional space, using <see cref="T:System.Double"/> coordinates.
            </summary>
            <remarks><para>
            The <b>Line</b> structure holds two <see cref="T:System.Windows.Point"/> values that indicate the <see cref="P:Tektosyne.Geometry.Line.Start"/> and <see cref="P:Tektosyne.Geometry.Line.End"/> coordinates of a directed line. Its <see cref="P:Tektosyne.Geometry.Line.Angle"/> and <see cref="P:Tektosyne.Geometry.Line.Length"/> are calculated on demand.
            </para><para>
            Two operators convert to and from <see cref="T:System.Windows.Rect"/> instances. This is a lossless
            conversion as <see cref="T:System.Windows.Rect"/> holds exactly the same data as <b>Line</b>.
            </para><para>
            Use the <see cref="T:Tektosyne.Geometry.LineI"/> structure to represent directed lines with <see cref="T:System.Int32"/>
            coordinates, and the <see cref="T:Tektosyne.Geometry.LineF"/> structure to represent directed lines with <see cref="T:System.Single"/> coordinates. Four more operators convert to and from <see cref="T:Tektosyne.Geometry.LineF"/> and
            <see cref="T:Tektosyne.Geometry.LineI"/> instances, rounding off the <see cref="T:System.Double"/> or <see cref="T:System.Int32"/>
            coordinates of the <b>Line</b> instance as necessary.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Line.#ctor(System.Double,System.Double,System.Double,System.Double)">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.Line"/> structure.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.Line"/> structure with the specified start
            and end coordinates.</summary>
            <param name="startX">
            The initial value for the <see cref="P:System.Windows.Point.X"/> coordinate of the <see cref="P:Tektosyne.Geometry.Line.Start"/>
            property.</param>
            <param name="startY">
            The initial value for the <see cref="P:System.Windows.Point.Y"/> coordinate of the <see cref="P:Tektosyne.Geometry.Line.Start"/>
            property.</param>
            <param name="endX">
            The initial value for the <see cref="P:System.Windows.Point.X"/> coordinate of the <see cref="P:Tektosyne.Geometry.Line.End"/>
            property.</param>
            <param name="endY">
            The initial value for the <see cref="P:System.Windows.Point.Y"/> coordinate of the <see cref="P:Tektosyne.Geometry.Line.End"/>
            property.</param>
        </member>
        <member name="M:Tektosyne.Geometry.Line.#ctor(System.Windows.Point,System.Windows.Point)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.Line"/> structure with the specified start
            and end coordinates.</summary>
            <param name="start">
            The initial value for the <see cref="P:Tektosyne.Geometry.Line.Start"/> property.</param>
            <param name="end">
            The initial value for the <see cref="P:Tektosyne.Geometry.Line.End"/> property.</param>
        </member>
        <member name="F:Tektosyne.Geometry.Line.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.Geometry.Line"/> instance.</summary>
            <remarks>
            <b>Empty</b> contains a <see cref="T:Tektosyne.Geometry.Line"/> instance that was created with the default
            constructor.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Line.GetHashCode">
            <summary>
            Returns the hash code for this <see cref="T:Tektosyne.Geometry.Line"/> instance.</summary>
            <returns>
            An <see cref="T:System.Int32"/> hash code.</returns>
            <remarks>
            <b>GetHashCode</b> returns the result of <see cref="M:System.Windows.Rect.GetHashCode"/> for a <see cref="T:System.Windows.Rect"/> whose edge locations equal the <see cref="P:Tektosyne.Geometry.Line.Start"/> and <see cref="P:Tektosyne.Geometry.Line.End"/>
            properties of this <see cref="T:Tektosyne.Geometry.Line"/> instance.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Line.ToString">
            <summary>
            Returns a <see cref="T:System.String"/> that represents the <see cref="T:Tektosyne.Geometry.Line"/>.</summary>
            <returns>
            A <see cref="T:System.String"/> containing the coordinates of the <see cref="P:Tektosyne.Geometry.Line.Start"/> and <see cref="P:Tektosyne.Geometry.Line.End"/> properties.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.Line.op_Equality(Tektosyne.Geometry.Line,Tektosyne.Geometry.Line)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.Geometry.Line"/> instances have the same value.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Geometry.Line"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Geometry.Line"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.Geometry.Line.Equals(Tektosyne.Geometry.Line)"/> method to test the two <see cref="T:Tektosyne.Geometry.Line"/> instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Line.op_Inequality(Tektosyne.Geometry.Line,Tektosyne.Geometry.Line)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.Geometry.Line"/> instances have different values.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Geometry.Line"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Geometry.Line"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is different from the value of
            <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.Geometry.Line.Equals(Tektosyne.Geometry.Line)"/> method to test the two <see cref="T:Tektosyne.Geometry.Line"/> instances for value inequality.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Line.op_Implicit(Tektosyne.Geometry.LineF)~Tektosyne.Geometry.Line">
            <summary>
            Converts a <see cref="T:Tektosyne.Geometry.LineF"/> to a <see cref="T:Tektosyne.Geometry.Line"/> with identical property values.
            </summary>
            <param name="line">
            The <see cref="T:Tektosyne.Geometry.LineF"/> instance to convert into a <see cref="T:Tektosyne.Geometry.Line"/> instance.</param>
            <returns>
            A <see cref="T:Tektosyne.Geometry.Line"/> instance whose <see cref="P:Tektosyne.Geometry.Line.Start"/> and <see cref="P:Tektosyne.Geometry.Line.End"/> properties
            equal the corresponding properties of the specified <paramref name="line"/>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.Line.op_Explicit(Tektosyne.Geometry.Line)~Tektosyne.Geometry.LineF">
            <summary>
            Converts a <see cref="T:Tektosyne.Geometry.Line"/> to a <see cref="T:Tektosyne.Geometry.LineF"/> with identical property values.
            </summary>
            <param name="line">
            The <see cref="T:Tektosyne.Geometry.Line"/> instance to convert into a <see cref="T:Tektosyne.Geometry.LineI"/> instance.</param>
            <returns>
            A <see cref="T:Tektosyne.Geometry.LineF"/> instance whose <see cref="P:Tektosyne.Geometry.Line.Start"/> and <see cref="P:Tektosyne.Geometry.Line.End"/>
            properties equal the corresponding properties of the specified <paramref name="line"/>.
            </returns>
            <remarks>
            The <see cref="T:System.Double"/> coordinates of the specified <paramref name="line"/> are
            converted to <see cref="T:System.Single"/> coordinates using truncating casts.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Line.op_Implicit(Tektosyne.Geometry.LineI)~Tektosyne.Geometry.Line">
            <summary>
            Converts a <see cref="T:Tektosyne.Geometry.LineI"/> to a <see cref="T:Tektosyne.Geometry.Line"/> with identical property values.
            </summary>
            <param name="line">
            The <see cref="T:Tektosyne.Geometry.LineI"/> instance to convert into a <see cref="T:Tektosyne.Geometry.Line"/> instance.</param>
            <returns>
            A <see cref="T:Tektosyne.Geometry.Line"/> instance whose <see cref="P:Tektosyne.Geometry.Line.Start"/> and <see cref="P:Tektosyne.Geometry.Line.End"/> properties
            equal the corresponding properties of the specified <paramref name="line"/>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.Line.op_Explicit(Tektosyne.Geometry.Line)~Tektosyne.Geometry.LineI">
            <summary>
            Converts a <see cref="T:Tektosyne.Geometry.Line"/> to a <see cref="T:Tektosyne.Geometry.LineI"/> with identical property values.
            </summary>
            <param name="line">
            The <see cref="T:Tektosyne.Geometry.Line"/> instance to convert into a <see cref="T:Tektosyne.Geometry.LineI"/> instance.</param>
            <returns>
            A <see cref="T:Tektosyne.Geometry.LineI"/> instance whose <see cref="P:Tektosyne.Geometry.Line.Start"/> and <see cref="P:Tektosyne.Geometry.Line.End"/>
            properties equal the corresponding properties of the specified <paramref name="line"/>.
            </returns>
            <remarks>
            The <see cref="T:System.Double"/> coordinates of the specified <paramref name="line"/> are
            converted to <see cref="T:System.Int32"/> coordinates using <see cref="M:Tektosyne.Fortran.NInt(System.Decimal)"/> rounding.
            </remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Line.op_Explicit(System.Windows.Rect)~Tektosyne.Geometry.Line">
            <summary>
            Converts a <see cref="T:System.Windows.Rect"/> to a <see cref="T:Tektosyne.Geometry.Line"/> extending from the top-left to the
            bottom-right corner.</summary>
            <param name="rectangle">
            The <see cref="T:System.Windows.Rect"/> instance to convert into a <see cref="T:Tektosyne.Geometry.Line"/> instance.</param>
            <returns>
            A <see cref="T:Tektosyne.Geometry.Line"/> instance whose <see cref="P:Tektosyne.Geometry.Line.Start"/> and <see cref="P:Tektosyne.Geometry.Line.End"/> properties
            equal the edge locations of the specified <paramref name="rectangle"/>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.Line.op_Explicit(Tektosyne.Geometry.Line)~System.Windows.Rect">
            <summary>
            Converts a <see cref="T:Tektosyne.Geometry.Line"/> to a <see cref="T:System.Windows.Rect"/> extending from <see cref="P:Tektosyne.Geometry.Line.Start"/>
            to <see cref="P:Tektosyne.Geometry.Line.End"/>.</summary>
            <param name="line">
            The <see cref="T:Tektosyne.Geometry.Line"/> instance to convert into a <see cref="T:System.Windows.Rect"/> instance.</param>
            <returns>
            A <see cref="T:System.Windows.Rect"/> instance whose edge locations equal the values of the <see cref="P:Tektosyne.Geometry.Line.Start"/> and <see cref="P:Tektosyne.Geometry.Line.End"/> properties of the specified <paramref name="line"/>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.Line.Equals(System.Object)">
            <overloads>
            Determines whether two <see cref="T:Tektosyne.Geometry.Line"/> instances have the same value.</overloads>
            <summary>
            Determines whether this <see cref="T:Tektosyne.Geometry.Line"/> instance and a specified object, which must
            be a <see cref="T:Tektosyne.Geometry.Line"/>, have the same value.</summary>
            <param name="obj">
            An <see cref="T:System.Object"/> to compare to this <see cref="T:Tektosyne.Geometry.Line"/> instance.</param>
            <returns>
            <c>true</c> if <paramref name="obj"/> is another <see cref="T:Tektosyne.Geometry.Line"/> instance and its
            value is the same as this instance; otherwise, <c>false</c>.</returns>
            <remarks>
            If the specified <paramref name="obj"/> is another <see cref="T:Tektosyne.Geometry.Line"/> instance,
            <b>Equals</b> invokes the strongly-typed <see cref="M:Tektosyne.Geometry.Line.Equals(Tektosyne.Geometry.Line)"/> overload to test the
            two instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Line.Equals(Tektosyne.Geometry.Line)">
            <summary>
            Determines whether this instance and a specified <see cref="T:Tektosyne.Geometry.Line"/> have the same
            value.</summary>
            <param name="line">
            A <see cref="T:Tektosyne.Geometry.Line"/> to compare to this instance.</param>
            <returns>
            <c>true</c> if the value of <paramref name="line"/> is the same as this instance;
            otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> compares the values of the <see cref="P:Tektosyne.Geometry.Line.Start"/> and <see cref="P:Tektosyne.Geometry.Line.End"/>
            properties of the two <see cref="T:Tektosyne.Geometry.Line"/> instances to test for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Line.Equals(Tektosyne.Geometry.Line,Tektosyne.Geometry.Line)">
            <summary>
            Determines whether two specified <see cref="T:Tektosyne.Geometry.Line"/> instances have the same value.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Geometry.Line"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Geometry.Line"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> invokes the non-static <see cref="M:Tektosyne.Geometry.Line.Equals(Tektosyne.Geometry.Line)"/> overload to test the two
            <see cref="T:Tektosyne.Geometry.Line"/> instances for value equality.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Line.Angle">
            <summary>
            Gets the angle of the <see cref="T:Tektosyne.Geometry.Line"/>, in radians.</summary>
            <value>
            The angle, measured in radians, of the direction on the Cartesian plane into which the
            line represented by this <see cref="T:Tektosyne.Geometry.Line"/> instance is pointing.</value>
            <remarks><para>
            <b>Angle</b> returns the result of <see cref="M:System.Math.Atan2(System.Double,System.Double)"/> for the horizontal and
            vertical distances between the <see cref="P:Tektosyne.Geometry.Line.End"/> and <see cref="P:Tektosyne.Geometry.Line.Start"/> properties.
            </para><para>
            <b>Angle</b> equals zero if the line represented by this <see cref="T:Tektosyne.Geometry.Line"/> instance
            extends horizontally to the right, and increases as the line turns clockwise. The
            possible range of values is [-<see cref="F:System.Math.PI"/>, <see cref="F:System.Math.PI"/>].
            </para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Line.Degrees">
            <summary>
            Gets the angle of the <see cref="T:Tektosyne.Geometry.Line"/>, in degrees.</summary>
            <value>
            The angle, measured in degrees, of the direction on the Cartesian plane into which the
            line represented by this <see cref="T:Tektosyne.Geometry.Line"/> instance is pointing.</value>
            <remarks><para>
            <b>Degrees</b> returns the value of <see cref="P:Tektosyne.Geometry.Line.Angle"/>, converted to degrees.
            </para><para>
            <b>Degrees</b> equals zero if the line represented by this <see cref="T:Tektosyne.Geometry.Line"/> instance
            extends horizontally to the right, and increases as the line turns clockwise. The
            possible range of values is [-180, 180].</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Line.End">
            <summary>
            Gets or sets the end coordinates of the <see cref="T:Tektosyne.Geometry.Line"/>.</summary>
            <value>
            The coordinates of the point where the line represented by this <see cref="T:Tektosyne.Geometry.Line"/>
            instance ends.</value>
        </member>
        <member name="P:Tektosyne.Geometry.Line.Length">
            <summary>
            Gets the absolute length of the <see cref="T:Tektosyne.Geometry.Line"/>.</summary>
            <value>
            A non-negative <see cref="T:System.Double"/> value indicating the absolute length of line
            represented by this <see cref="T:Tektosyne.Geometry.Line"/> instance.</value>
        </member>
        <member name="P:Tektosyne.Geometry.Line.Size">
            <summary>
            Gets the Cartesian dimensions of the <see cref="T:Tektosyne.Geometry.Line"/>.</summary>
            <value>
            A <see cref="T:System.Windows.Vector"/> value defined as (<b>End.X</b> - <b>Start.X</b>, <b>End.Y</b> -
            <b>Start.Y</b>).</value>
            <remarks><para>
            The <see cref="P:System.Windows.Vector.X"/> and <see cref="P:System.Windows.Vector.Y"/> properties of <b>Size</b> may be
            zero or negative, depending on the direction of this <see cref="T:Tektosyne.Geometry.Line"/> instance.
            </para><note type="implementnotes">
            <b>Size</b> returns an instance of <see cref="T:System.Windows.Vector"/> rather than <see cref="T:System.Windows.Size"/>
            because the latter does not accept negative <see cref="P:System.Windows.Size.Width"/> or <see cref="P:System.Windows.Size.Height"/> values.</note></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Line.Start">
            <summary>
            Gets or sets the start coordinates of the <see cref="T:Tektosyne.Geometry.Line"/>.</summary>
            <value>
            The coordinates of the point where the line represented by this <see cref="T:Tektosyne.Geometry.Line"/>
            instance starts.</value>
        </member>
        <member name="T:Tektosyne.Collections.DictionaryEx`2">
            <summary>
            Provides a generic collection of keys and values that are accessible by key.</summary>
            <typeparam name="TKey">
            The type of all keys in the collection. Keys cannot be null references.</typeparam>
            <typeparam name="TValue">
            The type of all values that are associated with the keys. If <typeparamref name="TValue"/>
            is a reference type, values may be null references.</typeparam>
            <remarks><para>
            <b>DictionaryEx</b> provides a <see cref="T:System.Collections.Generic.Dictionary`2"/> with a few extra
            features:
            </para><list type="bullet"><item>
            The <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> property of any <typeparamref name="TValue"/> that
            implements the <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> interface is automatically checked against
            the associated dictionary key when a key or value is changed or inserted.
            </item><item>
            <see cref="M:Tektosyne.Collections.DictionaryEx`2.AsReadOnly"/> returns a read-only wrapper that has the
            same public type as the original collection. Attempting to modify the collection through
            such a read-only view will raise a <see cref="T:System.NotSupportedException"/>.
            </item><item>
            <see cref="M:Tektosyne.Collections.DictionaryEx`2.Copy"/> creates a deep copy of the collection by
            invoking <see cref="M:System.ICloneable.Clone"/> on each value. This feature requires that all copied
            values implement the <see cref="T:System.ICloneable"/> interface.
            </item><item>
            <see cref="F:Tektosyne.Collections.DictionaryEx`2.Empty"/> returns an immutable empty collection that is
            cached for repeated access.
            </item><item>
            <see cref="M:Tektosyne.Collections.DictionaryEx`2.Equals(System.Collections.Generic.ICollection{System.Collections.Generic.KeyValuePair{`0,`1}})"/> compares two collections with identical
            element types for value equality of all elements. The collections compare as equal if they
            contain the same elements in the same order.
            </item></list><para>
            Moreover, several properties and methods that the standard class provides as explicit
            interface implementations have been elevated to public visibility.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> class.
            </overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> class that is
            empty, has the default initial capacity, and uses the default equality comparer for
            <typeparamref name="TKey"/>.</summary>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Dictionary`2.#ctor"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.#ctor(System.Collections.Generic.IDictionary{`0,`1})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> class that
            contains elements copied from the specified collection and uses the default equality
            comparer for <typeparamref name="TKey"/>.</summary>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> whose elements are copied to the new
            collection.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="dictionary"/> contains one or more duplicate keys.</exception>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="dictionary"/> is a null reference.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> is a null reference. </para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Dictionary`2.#ctor(System.Collections.Generic.IDictionary{`0,`1})"/> for
            details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.#ctor(System.Collections.Generic.IDictionary{`0,`1},System.Collections.Generic.IEqualityComparer{`0})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> class that
            contains elements copied from the specified collection and uses the specified equality
            comparer for <typeparamref name="TKey"/>.</summary>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> whose elements are copied to the new
            collection.</param>
            <param name="comparer">
            The <see cref="T:System.Collections.Generic.IEqualityComparer`1"/> to use when comparing keys, or a null
            reference to use the default <see cref="T:System.Collections.Generic.EqualityComparer`1"/> for <typeparamref name="TKey"/>.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="dictionary"/> contains one or more duplicate keys.</exception>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="dictionary"/> is a null reference.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> is a null reference. </para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/>.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Dictionary`2.#ctor(System.Collections.Generic.IDictionary{`0,`1},System.Collections.Generic.IEqualityComparer{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.#ctor(System.Collections.Generic.IEqualityComparer{`0})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> class that is
            empty, has the default initial capacity, and uses the specified equality comparer for
            <typeparamref name="TKey"/>.</summary>
            <param name="comparer">
            The <see cref="T:System.Collections.Generic.IEqualityComparer`1"/> to use when comparing keys, or a null
            reference to use the default <see cref="T:System.Collections.Generic.EqualityComparer`1"/> for <typeparamref name="TKey"/>.</param>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Dictionary`2.#ctor(System.Collections.Generic.IEqualityComparer{`0})"/> for
            details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> class that is
            empty, has the specified initial capacity, and uses the default equality comparer for
            <typeparamref name="TKey"/>.</summary>
            <param name="capacity">
            The number of elements that the new <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is
            initially capable of storing.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="capacity"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Dictionary`2.#ctor(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.#ctor(System.Int32,System.Collections.Generic.IEqualityComparer{`0})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> class that is
            empty, has the specified initial capacity, and uses the specified equality comparer for
            <typeparamref name="TKey"/>.</summary>
            <param name="capacity">
            The number of elements that the new <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is
            initially capable of storing.</param>
            <param name="comparer">
            The <see cref="T:System.Collections.Generic.IEqualityComparer`1"/> to use when comparing keys, or a null
            reference to use the default <see cref="T:System.Collections.Generic.EqualityComparer`1"/> for <typeparamref name="TKey"/>.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="capacity"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Dictionary`2.#ctor(System.Int32,System.Collections.Generic.IEqualityComparer{`0})"/>
            for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.#ctor(Tektosyne.Collections.DictionaryEx{`0,`1},System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> class that is
            a read-only view of the specified instance.</summary>
            <param name="dictionary">
            The <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> collection that provides the initial value
            for the <see cref="F:Tektosyne.Collections.DictionaryEx`2.InnerDictionary"/> field.</param>
            <param name="readOnly">
            The initial value for the <see cref="F:Tektosyne.Collections.DictionaryEx`2.ReadOnlyFlag"/> field. This argument must be
            <c>true</c>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="dictionary"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="readOnly"/> is <c>false</c>.</exception>
            <remarks>
            This constructor is used to create a read-only wrapper around an existing collection.
            The new instance shares the data of the specified <paramref name="dictionary"/>.
            </remarks>
        </member>
        <member name="F:Tektosyne.Collections.DictionaryEx`2.InnerDictionary">
            <summary>
            The <see cref="T:System.Collections.Generic.Dictionary`2"/> collection that holds the <typeparamref name="TKey"/> keys and <typeparamref name="TValue"/> values of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
        </member>
        <member name="F:Tektosyne.Collections.DictionaryEx`2.ReadOnlyFlag">
            <summary>
            Backs the <see cref="P:Tektosyne.Collections.DictionaryEx`2.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.DictionaryEx`2.IsReadOnly"/> properties.</summary>
        </member>
        <member name="F:Tektosyne.Collections.DictionaryEx`2.ReadOnlyWrapper">
            <summary>
            The read-only <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> collection that is returned by
            the <see cref="M:Tektosyne.Collections.DictionaryEx`2.AsReadOnly"/> method.</summary>
        </member>
        <member name="F:Tektosyne.Collections.DictionaryEx`2.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <remarks>
            Attempting to modify the <b>Empty</b> collection will raise a <see cref="T:System.NotSupportedException"/>. The collection has zero capacity and is guaranteed to
            never change, as there are no writable references to the collection.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.CheckDictionary(System.Collections.Generic.IDictionary{`0,`1})">
            <summary>
            Checks that the specified <see cref="T:System.Collections.Generic.IDictionary`2"/> is valid.</summary>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> to check.</param>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="dictionary"/> is a null reference.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> is a null reference. </para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/>.</exception>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.CheckWritable">
            <summary>
            Checks that the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> can be modified.</summary>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is read-only.</exception>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.Add(`0,`1)">
            <overloads>
            Adds the specified element to the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</overloads>
            <summary>
            Adds the specified key and value to the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            </summary>
            <param name="key">
            The key of the element to add.</param>
            <param name="value">
            The value of the element to add.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="key"/> already exists in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from <paramref name="key"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Dictionary`2.Add(`0,`1)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.System#Collections#IDictionary#Add(System.Object,System.Object)">
            <summary>
            Adds the specified key and value to the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            </summary>
            <param name="key">
            The key of the element to add. This argument must be compatible with <typeparamref name="TKey"/>.</param>
            <param name="value">
            The value of the element to add. This argument must be compatible with <typeparamref name="TValue"/>.</param>
            <exception cref="T:System.ArgumentException">
            <paramref name="key"/> already exists in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.InvalidCastException"><para>
            <paramref name="key"/> is not compatible with <typeparamref name="TKey"/>.
            </para><para>-or-</para><para>
            <paramref name="value"/> is not compatible with <typeparamref name="TValue"/>.
            </para></exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is read-only.</exception>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.Add(System.Collections.Generic.KeyValuePair{`0,`1})">
            <summary>
            Adds the specified key-and-value pair to the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            </summary>
            <param name="pair">
            The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> element to add.</param>
            <exception cref="T:System.ArgumentException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component of <paramref name="pair"/>
            already exists in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</exception>
            <exception cref="T:System.ArgumentNullException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component of <paramref name="pair"/> is
            a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> component of <paramref name="pair"/>
            is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/>
            differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component.
            </exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.ICollection`1.Add(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.AddRange(System.Collections.Generic.IDictionary{`0,`1})">
            <summary>
            Adds the elements of the specified collection to the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>. </summary>
            <param name="dictionary">
            The <see cref="T:System.Collections.Generic.IDictionary`2"/> whose elements to add.</param>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="dictionary"/> is a null reference.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> is a null reference. </para></exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            <paramref name="dictionary"/> contains an element whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/>.</exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> already contains one or more keys in the
            specified <paramref name="dictionary"/>.
            </para><para>-or-</para><para>
            <paramref name="dictionary"/> contains one or more duplicate keys.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.AddRange(System.Collections.Generic.IEnumerable{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.AsReadOnly">
            <summary>
            Returns a read-only view of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <returns>
            A read-only wrapper around the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</returns>
            <remarks><para>
            Attempting to modify the read-only wrapper returned by <b>AsReadOnly</b> will raise a
            <see cref="T:System.NotSupportedException"/>. Note that the original collection may still change,
            and any such changes will be reflected in the read-only view.
            </para><para>
            <b>AsReadOnly</b> buffers the newly created read-only wrapper when the method is first
            called, and returns the buffered value on subsequent calls.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.Clear">
            <summary>
            Removes all elements from the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Dictionary`2.Clear"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.Clone">
            <summary>
            Creates a shallow copy of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <returns>
            A shallow copy of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</returns>
            <remarks>
            <b>Clone</b> does not preserve the values of the <see cref="P:Tektosyne.Collections.DictionaryEx`2.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.DictionaryEx`2.IsReadOnly"/> properties.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.Contains(System.Collections.Generic.KeyValuePair{`0,`1})">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> contains the specified
            key-and-value pair.</summary>
            <param name="pair">
            The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> element to locate.</param>
            <returns>
            <c>true</c> if <paramref name="pair"/> is found in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.ICollection`1.Contains(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.ContainsKey(`0)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> contains the specified
            key.</summary>
            <param name="key">
            The key to locate.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> contains an element with the
            specified <paramref name="key"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Dictionary`2.ContainsKey(`0)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.System#Collections#IDictionary#Contains(System.Object)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> contains the specified
            key.</summary>
            <param name="key">
            The key to locate. This argument must be compatible with <typeparamref name="TKey"/>.
            </param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> contains an element with the
            specified <paramref name="key"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.InvalidCastException">
            <paramref name="key"/> is not compatible with <typeparamref name="TKey"/>.</exception>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.ContainsValue(`1)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> contains the specified
            value.</summary>
            <param name="value">
            The value to locate.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> contains an element with the
            specified <paramref name="value"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Dictionary`2.ContainsValue(`1)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.Copy">
            <summary>
            Creates a deep copy of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <returns>
            A deep copy of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</returns>
            <exception cref="T:System.InvalidCastException">
            <typeparamref name="T"/> does not implement <see cref="T:System.ICloneable"/>.</exception>
            <remarks><para>
            <b>Copy</b> is similar to <see cref="M:Tektosyne.Collections.DictionaryEx`2.Clone"/> but creates a deep copy the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> by invoking <see cref="M:System.ICloneable.Clone"/> on all 
            <typeparamref name="TValue"/> values. The <typeparamref name="TKey"/> keys are always
            duplicated by a shallow copy.
            </para><para>
            <b>Copy</b> does not preserve the values of the <see cref="P:Tektosyne.Collections.DictionaryEx`2.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.DictionaryEx`2.IsReadOnly"/> properties.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32)">
            <summary>
            Copies the entire <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> to a one-dimensional <see cref="T:System.Array"/>, starting at the specified index of the target array.</summary>
            <param name="array">
            The one-dimensional <see cref="T:System.Array"/> that is the destination of the <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements copied from the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>. The <b>Array</b> must have zero-based indexing.
            </param>
            <param name="arrayIndex">
            The zero-based index in <paramref name="array"/> at which copying begins.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="array"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="arrayIndex"/> is less than zero.</exception>
            <exception cref="T:System.ArgumentException"><para>
            <paramref name="arrayIndex"/> is equal to or greater than the length of <paramref name="array"/>.
            </para><para>-or-</para><para>
            The number of elements in the source <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is greater
            than the available space from <paramref name="arrayIndex"/> to the end of the
            destination <paramref name="array"/>.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.ICollection`1.CopyTo(`0[],System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.System#Collections#ICollection#CopyTo(System.Array,System.Int32)">
            <summary>
            Copies the entire <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> to a one-dimensional <see cref="T:System.Array"/>, starting at the specified index of the target array.</summary>
            <param name="array">
            The one-dimensional <see cref="T:System.Array"/> that is the destination of the <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements copied from the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>. The <b>Array</b> must have zero-based indexing.
            </param>
            <param name="arrayIndex">
            The zero-based index in <paramref name="array"/> at which copying begins.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="array"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="arrayIndex"/> is less than zero.</exception>
            <exception cref="T:System.ArgumentException"><para>
            <paramref name="array"/> is multidimensional.
            </para><para>-or-</para><para>
            <paramref name="arrayIndex"/> is equal to or greater than the length of <paramref name="array"/>.
            </para><para>-or-</para><para>
            The number of elements in the source <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is greater
            than the available space from <paramref name="arrayIndex"/> to the end of the
            destination <paramref name="array"/>.</para></exception>
            <exception cref="T:System.InvalidCastException">
            <see cref="T:System.Collections.Generic.KeyValuePair`2"/> cannot be cast automatically to the type of the
            destination <paramref name="array"/>.</exception>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.Equals(System.Collections.Generic.ICollection{System.Collections.Generic.KeyValuePair{`0,`1}})">
            <summary>
            Determines whether the specified collection contains the same key-and-value pairs in the
            same order as the current <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <param name="collection">
            The <see cref="T:System.Collections.Generic.ICollection`1"/> of <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements to
            compare with the current <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</param>
            <returns><para>
            <c>true</c> under the following conditions, otherwise <c>false</c>:
            </para><list type="bullet"><item>
            <paramref name="collection"/> is another reference to this <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            </item><item>
            <paramref name="collection"/> is not a null reference, contains the same number of
            elements as this <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>, and all elements compare as
            equal when retrieved in the enumeration sequence for each collection.
            </item></list></returns>
            <remarks>
            <b>Equals</b> calls <see cref="M:Tektosyne.Collections.CollectionsUtility.SequenceEqual``1(System.Collections.Generic.ICollection{``0},System.Collections.Generic.ICollection{``0})"/> to test the two
            collections for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.GetEnumerator">
            <summary>
            Returns a <see cref="T:System.Collections.Generic.Dictionary`2.Enumerator"/> that can iterate through the
            <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <returns>
            A <see cref="T:System.Collections.Generic.Dictionary`2.Enumerator"/> for the entire <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>. Each enumerated item is a <see cref="T:System.Collections.Generic.KeyValuePair`2"/>.</returns>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Dictionary`2.GetEnumerator"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.System#Collections#Generic#IEnumerable{System#Collections#Generic#KeyValuePair{TKey@TValue}}#GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can iterate through the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <returns>
            An <see cref="T:System.Collections.Generic.IEnumerator`1"/> for the entire <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            Each enumerated item is a <see cref="T:System.Collections.Generic.KeyValuePair`2"/>.</returns>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.System#Collections#IDictionary#GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.IDictionaryEnumerator"/> that can iterate through the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <returns>
            An <see cref="T:System.Collections.IDictionaryEnumerator"/> for the entire <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>. Each enumerated item is a <see cref="T:System.Collections.Generic.KeyValuePair`2"/>.
            </returns>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.IEnumerator"/> that can iterate through the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> for the entire <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            Each enumerated item is a <see cref="T:System.Collections.Generic.KeyValuePair`2"/>.</returns>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.Remove(`0)">
            <overloads>
            Removes the specified element from the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            </overloads>
            <summary>
            Removes the element with the specified key from the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <param name="key">
            The key of the element to remove.</param>
            <returns>
            <c>true</c> if <paramref name="key"/> was found and the associated element was removed;
            otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Dictionary`2.Remove(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.System#Collections#IDictionary#Remove(System.Object)">
            <summary>
            Removes the element with the specified key from the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <param name="key">
            The key of the element to remove. This argument must be compatible with <typeparamref name="TKey"/>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.InvalidCastException">
            <paramref name="key"/> is not compatible with <typeparamref name="TKey"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is read-only.</exception>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.Remove(System.Collections.Generic.KeyValuePair{`0,`1})">
            <summary>
            Removes the specified key-and-value pair from the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <param name="pair">
            The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> element to remove.</param>
            <returns>
            <c>true</c> if <paramref name="pair"/> was found and removed; otherwise, <c>false</c>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component of <paramref name="pair"/> is
            a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> component of <paramref name="pair"/>
            is an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/>
            differs from the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component.
            </exception>
            <exception cref="T:System.NotSupportedException">
            The <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is read-only.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.ICollection`1.Remove(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.ToArray">
            <summary>
            Copies the key-and-value pairs of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> to a new
            <see cref="T:System.Array"/>.</summary>
            <returns>
            A one-dimensional <see cref="T:System.Array"/> containing copies of the <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements of the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</returns>
            <remarks>
            <b>ToArray</b> has the same effect as <see cref="M:Tektosyne.Collections.DictionaryEx`2.CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32)"/> with a starting index of
            zero, but also allocates the target array.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.DictionaryEx`2.TryGetValue(`0,`1@)">
            <summary>
            Gets the value associated with the specified key.</summary>
            <param name="key">
            The key whose value to get.</param>
            <param name="value">
            The value associated with the first occurrence of <paramref name="key"/>, if found;
            otherwise, the default value for <typeparamref name="TValue"/>.</param>
            <returns>
            <c>true</c> if <paramref name="key"/> was found; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Dictionary`2.TryGetValue(`0,`1@)"/> for details.
            </remarks>
        </member>
        <member name="P:Tektosyne.Collections.DictionaryEx`2.Comparer">
            <summary>
            Gets the <see cref="T:System.Collections.Generic.IEqualityComparer`1"/> that is used to determine equality of
            keys in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <value>
            The <see cref="T:System.Collections.Generic.IEqualityComparer`1"/> instance that is used to compare keys for
            equality, and to provide hash values for the keys.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.Dictionary`2.Comparer"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.DictionaryEx`2.Count">
            <summary>
            Gets the number of key-and-value pairs contained in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <value>
            The number of <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements contained in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.Dictionary`2.Count"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.DictionaryEx`2.IsFixedSize">
            <summary>
            Gets a value indicating whether the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> has a fixed
            size.</summary>
            <value>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> has a fixed size; otherwise,
            <c>false</c>. The default is <c>false</c>.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.IDictionary.IsFixedSize"/> for details.
            </para><para>
            This property always returns the same value as the <see cref="P:Tektosyne.Collections.DictionaryEx`2.IsReadOnly"/> property,
            as none of the <b>Tektosyne.Collections</b> classes support writeable collections with
            a fixed size.</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.DictionaryEx`2.IsReadOnly">
            <summary>
            Gets a value indicating whether the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is
            read-only.</summary>
            <value>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is read-only; otherwise,
            <c>false</c>. The default is <c>false</c>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.IDictionary.IsReadOnly"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.DictionaryEx`2.IsSynchronized">
            <summary>
            Gets a value indicating whether access to the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>
            is synchronized (thread-safe).</summary>
            <value>
            <c>true</c> if access to the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is synchronized
            (thread-safe); otherwise, <c>false</c>. The default is <c>false</c>.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.ICollection.IsSynchronized"/> for details.
            </para><para>
            This property is provided for backwards compatibility only, as none of the
            <b>Tektosyne.Collections</b> classes support synchronized wrappers.</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.DictionaryEx`2.Item(`0)">
            <summary>
            Gets or sets the value associated with the specified key.</summary>
            <param name="key">
            The key whose value to get or set.</param>
            <value><para>
            The value associated with the specified <paramref name="key"/>.
            </para><para>
            If <paramref name="key"/> is not found, attempting to get it throws a <see cref="T:System.Collections.Generic.KeyNotFoundException"/>, and attempting to set it adds a new element with the
            specified key and value to the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</para></value>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:Tektosyne.Collections.KeyMismatchException">
            The property is set to an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance whose <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> differs from the specified <paramref name="key"/>.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">
            The property is read, and <paramref name="key"/> does not exist in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</exception>
            <exception cref="T:System.NotSupportedException">
            The property is set, and the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is read-only.
            </exception>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.Dictionary`2.Item(`0)"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.DictionaryEx`2.System#Collections#IDictionary#Item(System.Object)">
            <summary>
            Gets or sets the value associated with the specified key.</summary>
            <param name="key">
            The key whose value to get or set. This argument must be compatible with <typeparamref name="TKey"/>.</param>
            <value><para>
            The value associated with the specified <paramref name="key"/>. When the property is
            set, this argument must be compatible with <typeparamref name="TValue"/>.
            </para><para>
            If <paramref name="key"/> is not found, attempting to get it throws a <see cref="T:System.Collections.Generic.KeyNotFoundException"/>, and attempting to set it adds a new element with the
            specified key and value to the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</para></value>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.InvalidCastException"><para>
            <paramref name="key"/> is not compatible with <typeparamref name="TKey"/>.
            </para><para>-or-</para><para>
            The property is set to a value that is not compatible with <typeparamref name="TValue"/>.</para></exception>
            <exception cref="T:System.NotSupportedException">
            The property is set, and the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/> is read-only.
            </exception>
        </member>
        <member name="P:Tektosyne.Collections.DictionaryEx`2.Keys">
            <summary>
            Gets a collection containing the keys in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            </summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.Dictionary`2.KeyCollection"/> containing the keys in
            the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.Dictionary`2.Keys"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.DictionaryEx`2.System#Collections#Generic#IDictionary{TKey@TValue}#Keys">
            <summary>
            Gets a collection containing the keys in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            </summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.ICollection`1"/> containing the keys in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</value>
        </member>
        <member name="P:Tektosyne.Collections.DictionaryEx`2.System#Collections#IDictionary#Keys">
            <summary>
            Gets a collection containing the keys in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            </summary>
            <value>
            A read-only <see cref="T:System.Collections.ICollection"/> containing the keys in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</value>
        </member>
        <member name="P:Tektosyne.Collections.DictionaryEx`2.SyncRoot">
            <summary>
            Gets an object that can be used to synchronize access to the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</summary>
            <value>
            An object that can be used to synchronize access to the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.ICollection.SyncRoot"/> for details.
            </para><para>
            When synchronizing multi-threaded access to the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>, obtain a lock on the <b>SyncRoot</b> object rather than the collection
            itself.</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.DictionaryEx`2.Values">
            <summary>
            Gets a collection containing the values in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            </summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.Dictionary`2.ValueCollection"/> containing the values
            in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</value>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.Dictionary`2.Values"/> for details.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.DictionaryEx`2.System#Collections#Generic#IDictionary{TKey@TValue}#Values">
            <summary>
            Gets a collection containing the values in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            </summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.ICollection`1"/> containing the values in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</value>
        </member>
        <member name="P:Tektosyne.Collections.DictionaryEx`2.System#Collections#IDictionary#Values">
            <summary>
            Gets a collection containing the values in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.
            </summary>
            <value>
            A read-only <see cref="T:System.Collections.ICollection"/> containing the values in the <see cref="T:Tektosyne.Collections.DictionaryEx`2"/>.</value>
        </member>
        <member name="T:Tektosyne.Windows.WindowsFormsHostEx">
            <summary>
            Provides a <see cref="T:System.Windows.Forms.Integration.WindowsFormsHost"/> that shifts input focus to its hosted Windows
            Forms <see cref="T:System.Windows.Forms.Control"/>.</summary>
            <remarks><para>
            WPF input controls that do not declare their own <see cref="T:System.Windows.Controls.AccessText"/> are usually
            associated with a <see cref="T:System.Windows.Controls.Label"/> control whose <see cref="P:System.Windows.Controls.Label.Target"/> binding
            refers to the input control. When the label's keyboard shortcut is pressed, WPF transfers
            the input focus to the targeted input control instead.
            </para><para>
            Unfortunately, binding <b>Target</b> directly to a <see cref="T:System.Windows.Forms.Integration.WindowsFormsHost"/> element or
            to its hosted Windows Forms control works unreliably. Apparently, only the first Windows
            Forms control hosted in a WPF <see cref="T:System.Windows.Window"/> is ever activated by this binding.
            </para><para>
            <b>WindowsFormsHostEx</b> works around this issue by overriding <see cref="M:System.Windows.UIElement.OnGotFocus(System.Windows.RoutedEventArgs)"/> to explicitly shift the input focus to the hosted <see cref="P:System.Windows.Forms.Integration.WindowsFormsHost.Child"/> control. You can associate a hosted Windows Forms control
            with the keyboard shortcut of a WPF label as follows:
            </para><list type="number"><item>
            Substitute <b>WindowsFormsHostEx</b> for <see cref="T:System.Windows.Forms.Integration.WindowsFormsHost"/>.
            </item><item>
            Assign an <c>x:Name</c> to the <b>WindowsFormsHostEx</b> element.
            </item><item>
            Bind that name to the <b>Target</b> of the desired <b>Label</b>.</item></list></remarks>
        </member>
        <member name="M:Tektosyne.Windows.WindowsFormsHostEx.OnGotFocus(System.Windows.RoutedEventArgs)">
            <summary>
            Raises and handles the <see cref="E:System.Windows.UIElement.GotFocus"/> event.</summary>
            <param name="args">
            A <see cref="T:System.Windows.RoutedEventArgs"/> object containing event data.</param>
            <remarks><para>
            <b>OnGotFocus</b> raises the <see cref="E:System.Windows.UIElement.GotFocus"/> event by calling the base
            class implementation of <see cref="M:System.Windows.UIElement.OnGotFocus(System.Windows.RoutedEventArgs)"/>.
            </para><para>
            <b>OnGotFocus</b> then handles the <b>GotFocus</b> event by invoking <see cref="M:System.Windows.Forms.Control.Focus"/> on the hosted <see cref="P:System.Windows.Forms.Integration.WindowsFormsHost.Child"/> control, if
            any.</para></remarks>
        </member>
        <member name="T:Tektosyne.Windows.DefaultThemeSetter">
            <summary>
            Selects one of the default themes defined by Windows Presentation Foundation.</summary>
            <remarks><para>
            <b>DefaultThemeSetter</b> is a utility class with a single public method, <see cref="M:Tektosyne.Windows.DefaultThemeSetter.Select(Tektosyne.Windows.DefaultTheme)"/>, that directly manipulates two private fields in the
            currently loaded <b>PresentationFramework</b> assembly to change the default theme of the
            current WPF application.
            </para><para>
            This method obviously requires “full trust” permissions and may break with any future WPF
            revision. However, there is one big advantage over the usual method of importing the desired
            theme dictionary into the current application resources: the specified theme sets the 
            <em>default</em> styles for all visual elements. This means you can adjust implicit styles
            without having to explicitly specify base styles or worrying about infinite recursion.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.DefaultThemeSetter.Select(Tektosyne.Windows.DefaultTheme)">
            <summary>
            Selects the specified <see cref="T:Tektosyne.Windows.DefaultTheme"/> for the current WPF application.
            </summary>
            <param name="theme">
            A <see cref="T:Tektosyne.Windows.DefaultTheme"/> value indicating the desired combination of Windows theme
            and color variant.</param>
            <remarks><para>
            <b>Select</b> does nothing if the specified <paramref name="theme"/> equals <see cref="F:Tektosyne.Windows.DefaultTheme.System"/> or an invalid <see cref="T:Tektosyne.Windows.DefaultTheme"/> value.
            </para><para>
            Otherwise, <b>Select</b> sets two private static fields indicating the desired Windows
            theme and color variant within the currently loaded <b>PresentationFramework</b>
            assembly. The new values are derived from the specified <paramref name="theme"/> value.
            </para><para>
            This method is only effective if <b>Select</b> is called before WPF attempts to load the
            default theme. Therefore, you should call <b>Select</b> in the constructor of your WPF
            application.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.DefaultThemeSetter.SetField(System.Type,System.String,System.String)">
            <summary>
            Sets the specified non-public static field of the specified <see cref="T:System.Type"/> to the
            specified <see cref="T:System.String"/> value.</summary>
            <param name="type">
            The <see cref="T:System.Type"/> whose field to set.</param>
            <param name="name">
            The name of the field to set.</param>
            <param name="value">
            The new <see cref="T:System.String"/> value for the indicated field.</param>
            <remarks>
            <b>SetField</b> does nothing if the specified <paramref name="type"/> does not contain a
            non-public static field with the specified <paramref name="name"/>.</remarks>
        </member>
        <member name="T:Tektosyne.Win32Api.MapiMessage">
            <summary>
            Contains information about a message.</summary>
            <remarks>
            This type mirrors the <b>MapiMessage</b> (Simple MAPI) structure defined in the Platform
            SDK. Please refer to the Microsoft Platform SDK documentation for details.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessage.ulReserved">
            <summary>
            Reserved; must be zero.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessage.lpszSubject">
            <summary>
            A <see cref="T:System.String"/> describing the message subject.</summary>
            <remarks>
            The message subject is typically limited to 256 characters or less. If this member is a
            null reference or an empty string, the user has not entered subject text.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessage.lpszNoteText">
            <summary>
            A <see cref="T:System.String"/> containing the message text.</summary>
            <remarks>
            If this member is a null reference or an empty string, there is no message text.
            </remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessage.lpszMessageType">
            <summary>
            A <see cref="T:System.String"/> indicating a non-IPM type of message.</summary>
            <remarks>
            Client applications can select message types for their non-IPM messages. Clients that
            only support IPM messages can ignore the <b>lpszMessageType</b> member when reading
            messages and set it to a null reference or an empty string when sending messages.
            </remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessage.lpszDateReceived">
            <summary>
            A <see cref="T:System.String"/> indicating the date when the message was received.</summary>
            <remarks>
            The format is <c>YYYY/MM/DD HH:MM</c>, using a 24-hour clock.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessage.lpszConversationID">
            <summary>
            A <see cref="T:System.String"/> identifying the conversation thread to which the message belongs.
            </summary>
            <remarks>
            Some messaging systems can ignore and not return this member.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessage.flFlags">
            <summary>
            A bitmask of message status flags.</summary>
            <remarks><para>
            The following flags can be set:
            </para><list type="bullet"><item>
            <term><see cref="F:Tektosyne.Win32Api.MapiMessageFlags.MAPI_RECEIPT_REQUESTED"/></term>
            <description>A receipt notification is requested. Client applications set this flag when
            sending a message.</description>
            </item><item>
            <term><see cref="F:Tektosyne.Win32Api.MapiMessageFlags.MAPI_SENT"/></term>
            <description>The message has been sent.</description>
            </item><item>
            <term><see cref="F:Tektosyne.Win32Api.MapiMessageFlags.MAPI_UNREAD"/></term>
            <description>The message has not been read.</description>
            </item></list></remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessage.lpOriginator">
            <summary>
            A pointer to a <see cref="T:Tektosyne.Win32Api.MapiRecipDesc"/> structure containing information about the
            sender of the message.</summary>
            <remarks><para>
            <b>lpOriginator</b> is initialized to an empty <see cref="T:Tektosyne.Win32Api.SafeGlobalHandle"/> object.
            Use <see cref="M:Tektosyne.Win32Api.SafeGlobalHandle.AllocateHandle(System.Int32)"/> to allocate an unmanaged memory block.
            </para><para>
            Any unmanaged memory allocated for <b>lpOriginator</b> is released by <see cref="M:Tektosyne.Win32Api.MapiMessage.Dispose"/> or else by the <see cref="T:Tektosyne.Win32Api.SafeGlobalHandle"/> finalizer.
            </para></remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessage.nRecipCount">
            <summary>
            The number of message recipient structures in the array pointed to by the <see cref="F:Tektosyne.Win32Api.MapiMessage.lpRecips"/> member.</summary>
            <remarks>
            A value of zero indicates that no recipients are included.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessage.lpRecips">
            <summary>
            A pointer to an array of <see cref="T:Tektosyne.Win32Api.MapiRecipDesc"/> structures, each containing
            information about a message recipient.</summary>
            <remarks><para>
            <b>lpRecips</b> is initialized to an empty <see cref="T:Tektosyne.Win32Api.SafeGlobalHandle"/> object. Use
            <see cref="M:Tektosyne.Win32Api.SafeGlobalHandle.AllocateHandle(System.Int32)"/> to allocate an unmanaged memory block.
            </para><para>
            Any unmanaged memory allocated for <b>lpRecips</b> is released by <see cref="M:Tektosyne.Win32Api.MapiMessage.Dispose"/>
            or else by the <see cref="T:Tektosyne.Win32Api.SafeGlobalHandle"/> finalizer.</para></remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessage.nFileCount">
            <summary>
            The number of structures describing file attachments in the array pointed to by the <see cref="F:Tektosyne.Win32Api.MapiMessage.lpFiles"/> member.</summary>
            <remarks>
            A value of zero indicates that no file attachments are included.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiMessage.lpFiles">
            <summary>
            A pointer to an array of <see cref="T:Tektosyne.Win32Api.MapiFileDesc"/> structures, each containing
            information about a file attachment.</summary>
            <remarks><para>
            <b>lpFiles</b> is initialized to an empty <see cref="T:Tektosyne.Win32Api.SafeGlobalHandle"/> object. Use
            <see cref="M:Tektosyne.Win32Api.SafeGlobalHandle.AllocateHandle(System.Int32)"/> to allocate an unmanaged memory block.
            </para><para>
            Any unmanaged memory allocated for <b>lpFiles</b> is released by <see cref="M:Tektosyne.Win32Api.MapiMessage.Dispose"/>
            or else by the <see cref="T:Tektosyne.Win32Api.SafeGlobalHandle"/> finalizer.</para></remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.MapiMessage.Dispose">
            <summary>
            Releases all resources used by the <see cref="T:Tektosyne.Win32Api.MapiMessage"/> object.</summary>
            <remarks>
            <b>Dispose</b> releases any unmanaged memory allocated for <see cref="F:Tektosyne.Win32Api.MapiMessage.lpOriginator"/>,
            <see cref="F:Tektosyne.Win32Api.MapiMessage.lpRecips"/>, and <see cref="F:Tektosyne.Win32Api.MapiMessage.lpFiles"/>.</remarks>
        </member>
        <member name="T:Tektosyne.Win32Api.Mapi">
            <summary>
            Interfaces the Windows system library "mapi32.dll".</summary>
            <remarks>
            Contrary to what the MSDN Library (4/2002) states, the MAPI library does not support
            Unicode, only plain 8-bit strings. Therefore, the <b>Mapi</b> class marshals all <see cref="T:System.String"/> fields and parameters as <b>UnmanagedType.LPStr</b>.</remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.Mapi.MAPIAddress(System.UIntPtr,System.UIntPtr,System.String,System.UInt32,System.String,System.UInt32,System.IntPtr,Tektosyne.Win32Api.MapiFlags,System.UInt32,System.UInt32@,Tektosyne.Win32Api.SafeMapiHandle@)">
            <summary>
            Creates or modifies a set of address list entries.</summary>
            <param name="lhSession">
            Handle to a Simple MAPI session, or <see cref="F:System.UIntPtr.Zero"/> to indicate that MAPI
            should log on the user and create a temporary session.</param>
            <param name="ulUIParam">
            Parent window handle, or <see cref="F:System.UIntPtr.Zero"/> to indicate that if a dialog is
            displayed, it is application modal.</param>
            <param name="lpszCaption">
            The caption for the address list dialog box, or a null reference or an empty string for
            the default caption "Address Book".</param>
            <param name="nEditFields">
            A value from 0 through 4, indicating the number of edit controls that should be present
            in the address list. A value of 0 indicates that the address list may be browsed but not
            edited. Please refer to the Platform SDK documentation for further details.</param>
            <param name="lpszLabels">
            The label for the edit control in the address-list dialog box, or a null reference or an
            empty string for the default control label "To". This parameter is ignored if <paramref name="nEditFields"/> has a value other than one.</param>
            <param name="nRecips">
            The number of entries in the <paramref name="lpRecips"/> array. If the value of this
            parameter is zero, <paramref name="lpRecips"/> is ignored.</param>
            <param name="lpRecips">
            Pointer to an array of <see cref="T:Tektosyne.Win32Api.MapiRecipDesc"/> structures defining the initial
            recipient entries to be used to populate the address list dialog box. Please refer to
            the Platform SDK documentation for further details.</param>
            <param name="flFlags">
            Bitmask of option flags.</param>
            <param name="ulReserved">
            Reserved; must be zero.</param>
            <param name="lpnNewRecips">
            Returns the number of entries in the <paramref name="lppNewRecips"/> recipient output
            array.</param>
            <param name="lppNewRecips">
            Pointer to an array of <see cref="T:Tektosyne.Win32Api.MapiRecipDesc"/> structures containing the final list
            of recipients. This array is allocated by <b>MAPIAddress</b> and must be freed using
            <see cref="M:Tektosyne.Win32Api.Mapi.MAPIFreeBuffer(System.IntPtr)"/>, even if there are no new recipients. Please refer to the
            Platform SDK documentation for further details.</param>
            <returns>
            One of the values defined in <see cref="T:Tektosyne.Win32Api.MapiError"/>.</returns>
            <remarks><para>
            The following flags can be set in the <paramref name="flFlags"/> parameter:
            </para><list type="bullet"><item>
            <term>MapiFlags.MAPI_LOGON_UI</term>
            <description>A dialog box should be displayed to prompt the user to log on if required.
            When the <see cref="F:Tektosyne.Win32Api.MapiFlags.MAPI_LOGON_UI"/> flag is not set, the client application
            does not display a logon dialog box and returns an error value if the user is not logged
            on.</description>
            </item><item>
            <term>MapiFlags.MAPI_NEW_SESSION</term>
            <description>An attempt should be made to create a new session rather than acquire the
            environment's shared session. If the <see cref="F:Tektosyne.Win32Api.MapiFlags.MAPI_NEW_SESSION"/> flag is
            not set, <b>MAPIAddress</b> uses an existing shared session.</description>
            </item></list><para>
            This method invokes the <b>MAPIAddress</b> (Simple MAPI) function defined in the Windows
            system library "mapi32.dll". Please refer to the Microsoft Platform SDK documentation
            for details.
            </para><para>
            <see cref="M:Tektosyne.Net.MapiMail.Address"/> provides an easy-to-use managed wrapper for this
            method.</para></remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.Mapi.MAPIFreeBuffer(System.IntPtr)">
            <summary>
            Frees memory allocated by the messaging system.</summary>
            <param name="pv">
            Pointer to memory allocated by the messaging system. This pointer is returned by the
            <see cref="M:Tektosyne.Win32Api.Mapi.MAPIAddress(System.UIntPtr,System.UIntPtr,System.String,System.UInt32,System.String,System.UInt32,System.IntPtr,Tektosyne.Win32Api.MapiFlags,System.UInt32,System.UInt32@,Tektosyne.Win32Api.SafeMapiHandle@)"/>, <b>MAPIReadMail</b>, and <see cref="M:Tektosyne.Win32Api.Mapi.MAPIResolveName(System.UIntPtr,System.UIntPtr,System.String,Tektosyne.Win32Api.MapiFlags,System.UInt32,Tektosyne.Win32Api.SafeMapiHandle@)"/>
            functions.</param>
            <returns><para>
            One of the following <see cref="T:Tektosyne.Win32Api.MapiError"/> values:
            </para><list type="bullet"><item>
            <term>MapiError.SUCCESS_SUCCESS</term>
            <description>The call succeeded and the memory was freed.</description>
            </item><item>
            <term>MapiError.MAPI_E_FAILURE</term>
            <description>One or more unspecified errors occurred. The memory could not be freed.
            </description></item></list></returns>
        </member>
        <member name="M:Tektosyne.Win32Api.Mapi.MAPIResolveName(System.UIntPtr,System.UIntPtr,System.String,Tektosyne.Win32Api.MapiFlags,System.UInt32,Tektosyne.Win32Api.SafeMapiHandle@)">
            <summary>
            Transforms a message recipient's name as entered by a user to an unambiguous address
            list entry.</summary>
            <param name="lhSession">
            Handle to a Simple MAPI session, or <see cref="F:System.UIntPtr.Zero"/> to indicate that MAPI
            should log on the user and create a temporary session.</param>
            <param name="ulUIParam">
            Parent window handle, or <see cref="F:System.UIntPtr.Zero"/> to indicate that if a dialog is
            displayed, it is application modal.</param>
            <param name="lpszName">
            Recipient name to be resolved.</param>
            <param name="flFlags">
            Bitmask of option flags.</param>
            <param name="ulReserved">
            Reserved; must be zero.</param>
            <param name="lppRecip">
            Pointer to a <see cref="T:Tektosyne.Win32Api.MapiRecipDesc"/> structure if the resolution results in a single
            match. The recipient structure contains the resolved name and related information.
            Memory for this structure must be freed using <see cref="M:Tektosyne.Win32Api.Mapi.MAPIFreeBuffer(System.IntPtr)"/>.</param>
            <returns>
            One of the values defined in <see cref="T:Tektosyne.Win32Api.MapiError"/>.</returns>
            <remarks><para>
            The following flags can be set in the <paramref name="flFlags"/> parameter:
            </para><list type="bullet"><item>
            <term>MapiFlags.MAPI_AB_NOMODIFY</term>
            <description>The caller is requesting that the dialog box be read-only, prohibiting
            changes. <b>MAPIResolveName</b> ignores this flag if <see cref="F:Tektosyne.Win32Api.MapiFlags.MAPI_DIALOG"/>
            is not set.</description>
            </item><item>
            <term>MapiFlags.MAPI_DIALOG</term>
            <description>A dialog box should be displayed for name resolution. If this flag is not
            set and the name cannot be resolved, <b>MAPIResolveName</b> returns the <see cref="F:Tektosyne.Win32Api.MapiError.MAPI_E_AMBIGUOUS_RECIPIENT"/> value.</description>
            </item><item>
            <term>MapiFlags.MAPI_LOGON_UI</term>
            <description>A dialog box should be displayed to prompt the user to log on if required.
            When the <see cref="F:Tektosyne.Win32Api.MapiFlags.MAPI_LOGON_UI"/> flag is not set, the client application
            does not display a logon dialog box and returns an error value if the user is not logged
            on.</description>
            </item><item>
            <term>MapiFlags.MAPI_NEW_SESSION</term>
            <description>An attempt should be made to create a new session rather than acquire the
            environment's shared session. If the <see cref="F:Tektosyne.Win32Api.MapiFlags.MAPI_NEW_SESSION"/> flag is
            not set, <b>MAPIResolveName</b> uses an existing shared session.</description>
            </item></list><para>
            This method invokes the <b>MAPIResolveName</b> (Simple MAPI) function defined in the
            Windows system library "mapi32.dll". Please refer to the Microsoft Platform SDK
            documentation for details.
            </para><para>
            <see cref="M:Tektosyne.Net.MapiMail.ResolveName(System.String)"/> provides an easy-to-use managed wrapper for this
            method.</para></remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.Mapi.MAPISendMail(System.UIntPtr,System.UIntPtr,Tektosyne.Win32Api.MapiMessage,Tektosyne.Win32Api.MapiFlags,System.UInt32)">
            <summary>
            Sends a standard message, with or without user interaction.</summary>
            <param name="lhSession">
            Handle to a Simple MAPI session, or <see cref="F:System.UIntPtr.Zero"/> to indicate that MAPI
            should log on the user and create a temporary session.</param>
            <param name="ulUIParam">
            Parent window handle, or <see cref="F:System.UIntPtr.Zero"/> to indicate that if a dialog is
            displayed, it is application modal.</param>
            <param name="lpMessage">
            Pointer to a <see cref="T:Tektosyne.Win32Api.MapiMessage"/> structure containing the message to be sent.
            </param>
            <param name="flFlags">
            Bitmask of option flags.</param>
            <param name="ulReserved">
            Reserved; must be zero.</param>
            <returns>
            One of the values defined in <see cref="T:Tektosyne.Win32Api.MapiError"/>.</returns>
            <remarks><para>
            The following flags can be set in the <paramref name="flFlags"/> parameter:
            </para><list type="bullet"><item>
            <term>MapiFlags.MAPI_DIALOG</term>
            <description>A dialog should be displayed to prompt the user for recipients and other
            sending options. When <see cref="F:Tektosyne.Win32Api.MapiFlags.MAPI_DIALOG"/> is not set, at least one
            recipient must be specified.</description>
            </item><item>
            <term>MapiFlags.MAPI_LOGON_UI</term>
            <description>A dialog should be displayed to prompt the user to log on if required. When
            the <see cref="F:Tektosyne.Win32Api.MapiFlags.MAPI_LOGON_UI"/> flag is not set, the client application does
            not display a logon dialog and returns an error value if the user is not logged on.
            <b>MAPISendMail</b> ignores this flag if the <paramref name="lpszMessageID"/> parameter
            is empty.</description>
            </item><item>
            <term>MapiFlags.MAPI_NEW_SESSION</term>
            <description>An attempt should be made to create a new session rather than acquire the
            environment's shared session. If the <see cref="F:Tektosyne.Win32Api.MapiFlags.MAPI_NEW_SESSION"/> flag is
            not set, <b>MAPISendMail</b> uses an existing shared session.</description>
            </item></list><para>
            This method invokes the <b>MAPISendMail</b> (Simple MAPI) function defined in the
            Windows system library "mapi32.dll". Please refer to the Microsoft Platform SDK
            documentation for details.
            </para><para>
            <see cref="M:Tektosyne.Net.MapiMail.SendMail(System.String,System.String,Tektosyne.Net.MapiAddress[],Tektosyne.Net.MapiAddress[])"/> provides an easy-to-use managed wrapper for this
            method.</para></remarks>
        </member>
        <member name="T:Tektosyne.Win32Api.Kernel">
            <summary>
            Interfaces the Windows system library "kernel32.dll".</summary>
        </member>
        <member name="M:Tektosyne.Win32Api.Kernel.GetSystemTimeAdjustment(System.UInt32@,System.UInt32@,System.Boolean@)">
            <summary>
            Determines the periodic time adjustments that the system applies to its time-of-day
            clock at each clock interrupt.</summary>
            <param name="lpTimeAdjustment">
            The number of 100-nanosecond units added to the time-of-day clock at each periodic time
            adjustment.</param>
            <param name="lpTimeIncrement">
            The interval between periodic time adjustments, in 100-nanosecond units. This interval
            is the time period between a system's clock interrupts.</param>
            <param name="lpTimeAdjustmentDisabled">
            Indicates whether periodic time adjustment is in effect.</param>
            <returns>
            <c>true</c> if the function succeeds; otherwise, <c>false</c>.</returns>
            <remarks>
            This method maps to the <b>GetSystemTimeAdjustment</b> function defined in the Windows
            system library "kernel32.dll". Please refer to the Microsoft Platform SDK documentation
            for details.</remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.Kernel.GlobalMemoryStatus(Tektosyne.Win32Api.MemoryStatus)">
            <summary>
            Obtains information about the system's current usage of both physical and virtual
            memory.</summary>
            <param name="lpBuffer">
            An unmanaged <see cref="T:Tektosyne.Win32Api.MemoryStatus"/> object to receive information about current
            memory availability.</param>
            <remarks>
            This method maps to the <b>GlobalMemoryStatus</b> function defined in the Windows system
            library "kernel32.dll". Please refer to the Microsoft Platform SDK documentation for
            details.</remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.Kernel.GlobalMemoryStatusEx(Tektosyne.Win32Api.MemoryStatusEx)">
            <summary>
            Obtains information about the system's current usage of both physical and virtual
            memory.</summary>
            <param name="lpBuffer">
            An unmanaged <see cref="T:Tektosyne.Win32Api.MemoryStatusEx"/> object to receive information about current
            memory availability.</param>
            <returns>
            <c>true</c> if the function succeeds; otherwise, <c>false</c>.</returns>
            <remarks>
            This method maps to the <b>GlobalMemoryStatusEx</b> function defined in the Windows
            system library "kernel32.dll". Please refer to the Microsoft Platform SDK documentation
            for details.</remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.Kernel.MoveMemory(System.IntPtr,System.IntPtr,System.Int32)">
            <summary>
            Moves a block of memory from one location to another.</summary>
            <param name="destination">
            The starting address of the destination of the move.</param>
            <param name="source">
            The starting address of the block of memory to move.</param>
            <param name="length">
            The size of the block of memory to move, in bytes.</param>
            <remarks><para>
            This method maps to the <b>RtlMoveMemory</b> (alias <b>MoveMemory</b>) function defined
            in the Windows system library "kernel32.dll". Please refer to the Microsoft Platform SDK
            documentation for details.
            </para><para>
            The source and destination blocks may overlap.</para></remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.Kernel.QueryPerformanceCounter(System.Int64@)">
            <summary>
            Retrieves the current value of the high-resolution performance counter.</summary>
            <param name="lpPerformanceCount">
            The current performance-counter value, in counts.</param>
            <returns>
            <c>true</c> if the function succeeds; otherwise, <c>false</c>.</returns>
            <remarks>
            This method maps to the <b>QueryPerformanceCounter</b> function defined in the Windows
            system library "kernel32.dll". Please refer to the Microsoft Platform SDK documentation
            for details.</remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.Kernel.QueryPerformanceFrequency(System.Int64@)">
            <summary>
            Retrieves the frequency of the high-resolution performance counter, if one exists. The
            frequency cannot change while the system is running.</summary>
            <param name="lpFrequency">
            The current performance-counter frequency, in counts per second. If the installed
            hardware does not support a high-resolution performance counter, this parameter can be
            zero.</param>
            <returns>
            <c>true</c> if the installed hardware supports a high-resolution performance counter;
            otherwise, <c>false</c>.</returns>
            <remarks>
            This method maps to the <b>QueryPerformanceFrequency</b> function defined in the Windows
            system library "kernel32.dll". Please refer to the Microsoft Platform SDK documentation
            for details.</remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.Kernel.SetSystemTimeAdjustment(System.UInt32,System.Boolean)">
            <summary>
            Enables or disables periodic time adjustments to the system's time-of-day clock.
            </summary>
            <param name="dwTimeAdjustment">
            The number of 100-nanosecond units added to the time-of-day clock at each clock
            interrupt if periodic time adjustment is enabled.</param>
            <param name="bTimeAdjustmentDisabled">
            The time adjustment mode that the system is to use. Periodic system time adjustments can
            be disabled or enabled.</param>
            <returns>
            <c>true</c> if the function succeeds; otherwise, <c>false</c>. One way the function can
            fail is if the caller does not possess the SE_SYSTEMTIME_NAME privilege.</returns>
            <remarks>
            This method maps to the <b>SetSystemTimeAdjustment</b> function defined in the Windows
            system library "kernel32.dll". Please refer to the Microsoft Platform SDK documentation
            for details.</remarks>
        </member>
        <member name="T:Tektosyne.Pair`2">
            <summary>
            Provides an immutable pair of two arbitrary objects.</summary>
            <typeparam name="T1">
            The type of the first object.</typeparam>
            <typeparam name="T2">
            The type of the second object.</typeparam>
            <remarks>
            <b>Pair</b> is modelled on the standard <b>System.Web.UI.Pair</b> class but is implemented
            as an immutable generic structure rather than a simple class.</remarks>
        </member>
        <member name="M:Tektosyne.Pair`2.#ctor(`0,`1)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Pair`2"/> structure.</summary>
            <param name="first">
            The initial value for the <see cref="P:Tektosyne.Pair`2.First"/> property.</param>
            <param name="second">
            The initial value for the <see cref="P:Tektosyne.Pair`2.Second"/> property.</param>
        </member>
        <member name="F:Tektosyne.Pair`2.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.Pair`2"/> instance.</summary>
            <remarks>
            <b>Empty</b> contains a <see cref="T:Tektosyne.Pair`2"/> instance that was created with the
            default constructor.</remarks>
        </member>
        <member name="M:Tektosyne.Pair`2.GetHashCode">
            <summary>
            Returns the hash code for this <see cref="T:Tektosyne.Pair`2"/> instance.</summary>
            <returns>
            An <see cref="T:System.Int32"/> hash code.</returns>
            <remarks>
            <b>GetHashCode</b> combines the results of <see cref="M:System.Collections.Generic.EqualityComparer`1.GetHashCode(`0)"/>
            for the <see cref="P:Tektosyne.Pair`2.First"/> and <see cref="P:Tektosyne.Pair`2.Second"/> properties.</remarks>
        </member>
        <member name="M:Tektosyne.Pair`2.ToString">
            <summary>
            Returns a <see cref="T:System.String"/> that represents the <see cref="T:Tektosyne.Pair`2"/>.</summary>
            <returns>
            A <see cref="T:System.String"/> containing the culture-invariant string representations of the
            <see cref="P:Tektosyne.Pair`2.First"/> and <see cref="P:Tektosyne.Pair`2.Second"/> properties.</returns>
        </member>
        <member name="M:Tektosyne.Pair`2.op_Equality(Tektosyne.Pair{`0,`1},Tektosyne.Pair{`0,`1})">
            <summary>
            Determines whether two <see cref="T:Tektosyne.Pair`2"/> instances have the same value.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Pair`2"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Pair`2"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.Pair`2.Equals(Tektosyne.Pair{`0,`1})"/> method to test the two <see cref="T:Tektosyne.Pair`2"/> instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Pair`2.op_Inequality(Tektosyne.Pair{`0,`1},Tektosyne.Pair{`0,`1})">
            <summary>
            Determines whether two <see cref="T:Tektosyne.Pair`2"/> instances have different values.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Pair`2"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Pair`2"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is different from the value of
            <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.Pair`2.Equals(Tektosyne.Pair{`0,`1})"/> method to test the two <see cref="T:Tektosyne.Pair`2"/> instances for value inequality.</remarks>
        </member>
        <member name="M:Tektosyne.Pair`2.Equals(System.Object)">
            <overloads>
            Determines whether two <see cref="T:Tektosyne.Pair`2"/> instances have the same value.
            </overloads>
            <summary>
            Determines whether this <see cref="T:Tektosyne.Pair`2"/> instance and a specified object, which
            must be a <see cref="T:Tektosyne.Pair`2"/>, have the same value.</summary>
            <param name="obj">
            An <see cref="T:System.Object"/> to compare to this <see cref="T:Tektosyne.Pair`2"/> instance.</param>
            <returns>
            <c>true</c> if <paramref name="obj"/> is another <see cref="T:Tektosyne.Pair`2"/> instance and
            its value is the same as this instance; otherwise, <c>false</c>.</returns>
            <remarks>
            If the specified <paramref name="obj"/> is another <see cref="T:Tektosyne.Pair`2"/> instance,
            <b>Equals</b> invokes the strongly-typed <see cref="M:Tektosyne.Pair`2.Equals(Tektosyne.Pair{`0,`1})"/> overload to
            test the two instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Pair`2.Equals(Tektosyne.Pair{`0,`1})">
            <summary>
            Determines whether this instance and a specified <see cref="T:Tektosyne.Pair`2"/> have the same
            value.</summary>
            <param name="pair">
            A <see cref="T:Tektosyne.Pair`2"/> to compare to this instance.</param>
            <returns>
            <c>true</c> if the value of <paramref name="pair"/> is the same as this instance;
            otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> compares the values of the <see cref="P:Tektosyne.Pair`2.First"/> and <see cref="P:Tektosyne.Pair`2.Second"/>
            properties of the two <see cref="T:Tektosyne.Pair`2"/> instances to test for value equality.
            </remarks>
        </member>
        <member name="M:Tektosyne.Pair`2.Equals(Tektosyne.Pair{`0,`1},Tektosyne.Pair{`0,`1})">
            <summary>
            Determines whether two specified <see cref="T:Tektosyne.Pair`2"/> instances have the same
            value.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Pair`2"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Pair`2"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> invokes the non-static <see cref="M:Tektosyne.Pair`2.Equals(Tektosyne.Pair{`0,`1})"/> overload to test
            the two <see cref="T:Tektosyne.Pair`2"/> instances for value equality.</remarks>
        </member>
        <member name="P:Tektosyne.Pair`2.First">
            <summary>
            Gets the first object of the <see cref="T:Tektosyne.Pair`2"/>.</summary>
            <value>
            The first object of the <see cref="T:Tektosyne.Pair`2"/>.</value>
        </member>
        <member name="P:Tektosyne.Pair`2.Second">
            <summary>
            Gets the second object of the <see cref="T:Tektosyne.Pair`2"/>.</summary>
            <value>
            The second object of the <see cref="T:Tektosyne.Pair`2"/>.</value>
        </member>
        <member name="T:Tektosyne.IO.PathEx">
            <summary>
            Provides auxiliary methods for <b>System.IO.Path</b>.</summary>
        </member>
        <member name="M:Tektosyne.IO.PathEx.AddDirectorySeparator(System.String)">
            <summary>
            Adds a trailing directory separator character to the specified file path.</summary>
            <param name="path">
            The file path to which to add a trailing directory separator character.</param>
            <returns>
            The specified <paramref name="path"/>, with a single trailing <see cref="F:System.IO.Path.DirectorySeparatorChar"/> if neither this character nor <see cref="F:System.IO.Path.AltDirectorySeparatorChar"/> were already present.</returns>
            <remarks>
            <b>RemoveDirectorySeparator</b> returns a string containing a single <see cref="F:System.IO.Path.DirectorySeparatorChar"/> if the specified <paramref name="path"/> is a null
            reference or an empty string.</remarks>
        </member>
        <member name="M:Tektosyne.IO.PathEx.Equals(System.String,System.String)">
            <summary>
            Determines whether the two specified file paths are equivalent.</summary>
            <param name="firstPath">
            The first file path to compare.</param>
            <param name="secondPath">
            The second file path to compare.</param>
            <returns>
            <c>true</c> if the two file paths are equivalent, ignoring character case and directory
            separator variants.</returns>
            <remarks><para>
            <b>Equals</b> uses the following rules to test if the specified <paramref name="firstPath"/> equals the specified <paramref name="secondPath"/>:
            </para><list type="bullet"><item>
            Any trailing <see cref="F:System.IO.Path.DirectorySeparatorChar"/> or <see cref="F:System.IO.Path.AltDirectorySeparatorChar"/> characters are removed before the comparison.
            </item><item>
            <paramref name="firstPath"/> and <paramref name="secondPath"/> must have the same
            length.
            </item><item>
            All characters that match either <see cref="F:System.IO.Path.DirectorySeparatorChar"/> or <see cref="F:System.IO.Path.AltDirectorySeparatorChar"/> are considered equal.
            </item><item>
            All other characters are compared using the <see cref="F:System.StringComparison.OrdinalIgnoreCase"/> option.
            </item></list><para>
            If either argument is a null reference or an empty string, <b>Equals</b> returns
            <c>true</c> exactly if the other argument is also a null reference or an empty string;
            otherwise, <c>false</c>.</para></remarks>
        </member>
        <member name="M:Tektosyne.IO.PathEx.GetTempFileName(System.String)">
            <summary>
            Returns a unique name for a temporary file with the specified extension.</summary>
            <param name="extension">
            The new extension (with a leading period). Specify a null reference for no extension.
            </param>
            <returns>
            The full path to a uniquely named file with the specified <paramref name="extension"/>
            in the Windows directory for temporary files.</returns>
            <remarks><para>
            <b>GetTempFileName</b> performs the following steps to determine its return value:
            </para><list type="number"><item>
            Call <see cref="M:System.IO.Path.GetRandomFileName"/> to obtain a random file name without a
            directory prefix or extension suffix.
            </item><item>
            Prepend the directory for temporary files returned by <see cref="M:System.IO.Path.GetTempPath"/>.
            </item><item>
            Append the specified <paramref name="extension"/>.
            </item><item>
            Repeat from step #1 if a file already exists at that location; otherwise, return the
            resulting file name.
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.IO.PathEx.NormalizeDirectorySeparator(System.String)">
            <summary>
            Normalizes all directory separator characters in the specified file path.</summary>
            <param name="path">
            The file path whose directory separator characters to normalize.</param>
            <returns>
            The specified <paramref name="path"/>, in which all occurrences of <see cref="F:System.IO.Path.AltDirectorySeparatorChar"/> have been replaced with <see cref="F:System.IO.Path.DirectorySeparatorChar"/>.</returns>
            <remarks>
            <b>NormalizeDirectorySeparator</b> returns an empty string if the specified <paramref name="path"/> is a null reference or an empty string.</remarks>
        </member>
        <member name="M:Tektosyne.IO.PathEx.RemoveDirectorySeparator(System.String)">
            <summary>
            Removes any trailing directory separator characters from the specified file path.
            </summary>
            <param name="path">
            The file path whose trailing directory separator characters to remove.</param>
            <returns>
            The specified <paramref name="path"/>, without any trailing <see cref="F:System.IO.Path.DirectorySeparatorChar"/> or <see cref="F:System.IO.Path.AltDirectorySeparatorChar"/>
            characters.</returns>
            <remarks>
            <b>RemoveDirectorySeparator</b> returns an empty string if the specified <paramref name="path"/> is a null reference or an empty string.</remarks>
        </member>
        <member name="M:Tektosyne.IO.PathEx.Shorten(System.String,System.String)">
            <summary>
            Shortens the specified file path by the specified directory.</summary>
            <param name="path">
            The file path that may start with the specified <paramref name="directory"/> prefix.
            </param>
            <param name="directory">
            The directory prefix to remove from the specified <paramref name="path"/>.</param>
            <returns>
            The specified <paramref name="path"/> without the specified <paramref name="directory"/>
            prefix.</returns>
            <remarks><para>
            <b>Shorten</b> calls <see cref="M:Tektosyne.IO.PathEx.Equals(System.String,System.String)"/> to determine whether the beginning of the
            specified <paramref name="path"/> up to the length of <paramref name="directory"/>
            matches the specified <paramref name="directory"/>.
            </para><para>
            On success, <b>Shorten</b> returns an empty string if both arguments have the same
            length. Otherwise, if either the last character of <paramref name="directory"/> or the
            first character of the remaining part of <paramref name="path"/> matches
            <b>DirectorySeparatorChar</b> or <b>AltDirectorySeparatorChar</b>, <b>Shorten</b>
            returns the part of <paramref name="path"/> that follows this separator character.
            </para><para>
            <b>Shorten</b> returns the unmodified value of the specified <paramref name="path"/>
            under the following conditions:
            </para><list type="bullet"><item>
            <paramref name="path"/> is a null reference or an empty string.
            </item><item>
            <paramref name="directory"/> is a null reference or an empty string.
            </item><item>
            The length of <paramref name="directory"/> is greater than the length of <paramref name="path"/>.
            </item><item>
            <paramref name="path"/> does not start with <paramref name="directory"/>.
            </item><item>
            <paramref name="path"/> starts with <paramref name="directory"/> but the two parts are
            not separated by <see cref="F:System.IO.Path.DirectorySeparatorChar"/> or <see cref="F:System.IO.Path.AltDirectorySeparatorChar"/>.</item><para>
            <b>Shorten</b> never returns a null reference. If the method were to return <paramref name="path"/> and this argument is a null reference, <b>Shorten</b> will return an empty
            string instead.</para></list></remarks>
        </member>
        <member name="T:Tektosyne.Geometry.Polygon">
            <summary>
            Represents a regular polygon.</summary>
            <remarks><para>
            <b>Polygon</b> represents a regular polygon with three or more sides of a given length, and
            with one of the orientations defined by <see cref="T:Tektosyne.Geometry.PolygonOrientation"/>. The vertex
            coordinates of all polygons are symmetrical across the vertical axis, and those of polygons
            with an even number of sides are also symmetrical across the horizontal axis.
            </para><para>
            Upon construction, <b>Polygon</b> calculates the radii of the inscribed and circumscribed
            circles, the coordinates of all vertices, and the minimum bounding rectangle. All property
            values are immutable once defined. Methods that seem to change the side length of a given
            <b>Polygon</b> return a new instance instead, similar to the <see cref="T:System.String"/> class.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.#ctor(System.Double,System.Int32,Tektosyne.Geometry.PolygonOrientation)">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.Polygon"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.Polygon"/> class with the specified side
            length, number of sides, and orientation.</summary>
            <param name="length">
            The initial value for the <see cref="P:Tektosyne.Geometry.Polygon.Length"/> property.</param>
            <param name="sides">
            The initial value for the <see cref="P:Tektosyne.Geometry.Polygon.Sides"/> property.</param>
            <param name="orientation">
            The initial value for the <see cref="P:Tektosyne.Geometry.Polygon.Orientation"/> property.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="length"/> is equal to or less than zero.
            </para><para>-or-</para><para>
            <paramref name="sides"/> is less than three.</para></exception>
            <exception cref="T:System.ComponentModel.InvalidEnumArgumentException">
            <paramref name="orientation"/> is not a valid <see cref="T:Tektosyne.Geometry.PolygonOrientation"/> value.
            </exception>
            <remarks>
            The <see cref="P:Tektosyne.Geometry.Polygon.VertexNeighbors"/> property is initialized to <c>false</c>.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.#ctor(System.Double,System.Int32,Tektosyne.Geometry.PolygonOrientation,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.Polygon"/> class with the specified side
            length, number of sides, orientation, and vertex neighbors flag.</summary>
            <param name="length">
            The initial value for the <see cref="P:Tektosyne.Geometry.Polygon.Length"/> property.</param>
            <param name="sides">
            The initial value for the <see cref="P:Tektosyne.Geometry.Polygon.Sides"/> property.</param>
            <param name="orientation">
            The initial value for the <see cref="P:Tektosyne.Geometry.Polygon.Orientation"/> property.</param>
            <param name="vertexNeighbors">
            The initial value for the <see cref="P:Tektosyne.Geometry.Polygon.VertexNeighbors"/> property.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="length"/> is equal to or less than zero.
            </para><para>-or-</para><para>
            <paramref name="sides"/> is less than three.
            </para><para>-or-</para><para>
            <paramref name="vertexNeighbors"/> is <c>true</c>, and <paramref name="sides"/> is
            greater than four.</para></exception>
            <exception cref="T:System.ComponentModel.InvalidEnumArgumentException">
            <paramref name="orientation"/> is not a valid <see cref="T:Tektosyne.Geometry.PolygonOrientation"/> value.
            </exception>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.AngleToCompass(System.Double)">
            <summary>
            Converts the specified central angle to the corresponding <see cref="T:Tektosyne.Geometry.Compass"/>
            direction.</summary>
            <param name="angle">
            The central angle to convert, in degrees. This value is taken <see cref="M:Tektosyne.Fortran.Modulo(System.Decimal,System.Decimal)"/> 360 degrees, and may therefore be outside the interval [0, 360).
            </param>
            <returns>
            The <see cref="T:Tektosyne.Geometry.Compass"/> direction closest to the specified <paramref name="angle"/>.
            </returns>
            <remarks>
            The specified <paramref name="angle"/> is measured from the center of the <see cref="T:Tektosyne.Geometry.Polygon"/>, and increases clockwise from the right-hand side of the x-axis.
            </remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.AngleToIndex(System.Double)">
            <summary>
            Converts the specified central angle to the index of the corresponding edge or vertex.
            </summary>
            <param name="angle">
            The central angle to convert, in degrees. This value is taken <see cref="M:Tektosyne.Fortran.Modulo(System.Decimal,System.Decimal)"/> 360 degrees, and may therefore be outside the interval [0, 360).
            </param>
            <returns>
            The zero-based index of the edge or vertex at the specified <paramref name="angle"/>.
            </returns>
            <remarks><para>
            The specified <paramref name="angle"/> is measured from the center of the <see cref="T:Tektosyne.Geometry.Polygon"/>, and increases clockwise from the right-hand side of the x-axis.
            </para><para>
            If <see cref="P:Tektosyne.Geometry.Polygon.VertexNeighbors"/> is <c>false</c>, the returned index enumerates all
            edges in clockwise direction. Counting starts at the topmost edge if <see cref="P:Tektosyne.Geometry.Polygon.HasTopIndex"/> is <c>true</c>, and with the edge to the right of the topmost
            vertex otherwise.
            </para><para>
            If <see cref="P:Tektosyne.Geometry.Polygon.VertexNeighbors"/> is <c>true</c>, the returned index enumerates all edges
            and vertices in an alternating sequence. Counting starts with the topmost edge for <see cref="F:Tektosyne.Geometry.PolygonOrientation.OnEdge"/> orientation and with the topmost vertex otherwise,
            continuing clockwise.
            </para><para>
            Valid indices range from zero to <see cref="P:Tektosyne.Geometry.Polygon.Connectivity"/> less one. The 360 degrees of
            a full rotation around the central point are evenly divided among this range so that
            each index corresponds to an equal arc. If <see cref="P:Tektosyne.Geometry.Polygon.VertexNeighbors"/> is <c>true</c>,
            the arcs that are mapped to edge indices cover only the central half of each edge. The
            arcs covering the outer parts are mapped to vertex indices instead.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.Circumscribe(System.Double)">
            <overloads>
            Creates a copy of the <see cref="T:Tektosyne.Geometry.Polygon"/> that is circumscribed around the specified
            circle or rectangle.</overloads>
            <summary>
            Creates a copy of the <see cref="T:Tektosyne.Geometry.Polygon"/> that is circumscribed around the specified
            circle.</summary>
            <param name="radius">
            The radius of the circle around which to circumscribe the <see cref="T:Tektosyne.Geometry.Polygon"/>.</param>
            <returns>
            A copy of this <see cref="T:Tektosyne.Geometry.Polygon"/> instance whose <see cref="P:Tektosyne.Geometry.Polygon.InnerRadius"/> equals the
            specified <paramref name="radius"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="radius"/> is equal to or less than zero.</exception>
            <remarks>
            <b>Circumscribe</b> returns the current <see cref="T:Tektosyne.Geometry.Polygon"/> if the specified <paramref name="radius"/> equals the current <see cref="P:Tektosyne.Geometry.Polygon.InnerRadius"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.Circumscribe(System.Double,System.Double)">
            <summary>
            Creates a copy of the <see cref="T:Tektosyne.Geometry.Polygon"/> that is circumscribed around the specified
            rectangle.</summary>
            <param name="width">
            The width of the rectangle around which to circumscribe the <see cref="T:Tektosyne.Geometry.Polygon"/>.
            </param>
            <param name="height">
            The height of the rectangle around which to circumscribe the <see cref="T:Tektosyne.Geometry.Polygon"/>.
            </param>
            <returns>
            A copy of this <see cref="T:Tektosyne.Geometry.Polygon"/> instance whose area completely covers a rectangle
            with the specified <paramref name="width"/> and <paramref name="height"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="width"/> or <paramref name="height"/> is equal to or less than zero.
            </exception>
            <remarks>
            <b>Circumscribe</b> returns exact results for triangles and squares only. For other
            polygons, the returned <see cref="T:Tektosyne.Geometry.Polygon"/> is an approximation that includes some
            excess space around an inscribed rectangle with the specified <paramref name="width"/>
            and <paramref name="height"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.CompassToIndex(Tektosyne.Geometry.Compass)">
            <summary>
            Converts the specified <see cref="T:Tektosyne.Geometry.Compass"/> direction to the index of the corresponding
            edge or vertex.</summary>
            <param name="compass">
            The <see cref="T:Tektosyne.Geometry.Compass"/> direction to convert.</param>
            <returns>
            The zero-based index of the edge or vertex closest to the specified <paramref name="compass"/> direction.</returns>
            <remarks>
            <b>CompassToIndex</b> invokes <see cref="M:Tektosyne.Geometry.Polygon.AngleToIndex(System.Double)"/> on the <see cref="T:System.Int32"/>
            value of the specified <paramref name="compass"/> direction, less 90 degress. Please
            refer to <see cref="M:Tektosyne.Geometry.Polygon.AngleToIndex(System.Double)"/> for an explanation of index values.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.Draw(System.Windows.Media.StreamGeometryContext,System.Windows.Vector,System.Boolean)">
            <summary>
            Draws the <see cref="T:Tektosyne.Geometry.Polygon"/> to a specified <see cref="T:System.Windows.Media.StreamGeometry"/>.</summary>
            <param name="context">
            The <see cref="T:System.Windows.Media.StreamGeometryContext"/> that receives the <see cref="T:Tektosyne.Geometry.Polygon"/>.</param>
            <param name="offset">
            The offset by which to shift the <see cref="T:Tektosyne.Geometry.Polygon"/>.</param>
            <param name="isFilled">
            <c>true</c> to use the area contained by the <see cref="T:Tektosyne.Geometry.Polygon"/> for hit-testing,
            rendering, and clipping; otherwise, <c>false</c>.</param>
            <remarks>
            <b>Draw</b> issues one <see cref="M:System.Windows.Media.StreamGeometryContext.BeginFigure(System.Windows.Point,System.Boolean,System.Boolean)"/> call with the
            specified <paramref name="isFilled"/> parameter for the first <see cref="P:Tektosyne.Geometry.Polygon.Vertices"/>
            element, and then one <see cref="M:System.Windows.Media.StreamGeometryContext.LineTo(System.Windows.Point,System.Boolean,System.Boolean)"/> call for each remaining
            element. All coordinates are shifted by the specified <paramref name="offset"/>.
            </remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.IndexToAngle(System.Int32)">
            <summary>
            Converts the specified index of an edge or vertex to the corresponding central angle.
            </summary>
            <param name="index">
            The zero-based index of an edge or vertex. This value is taken <see cref="M:Tektosyne.Fortran.Modulo(System.Decimal,System.Decimal)"/> the current <see cref="P:Tektosyne.Geometry.Polygon.Connectivity"/>, and may therefore be
            negative or greater than the maximum index.</param>
            <returns>
            The central angle, in degrees, of the edge or vertex with the specified <paramref name="index"/>. This value is always in the interval [0, 360).</returns>
            <remarks><para>
            If <see cref="P:Tektosyne.Geometry.Polygon.VertexNeighbors"/> is <c>false</c>, the specified <paramref name="index"/>
            enumerates all edges in clockwise direction. Counting starts at the topmost edge if <see cref="P:Tektosyne.Geometry.Polygon.HasTopIndex"/> is <c>true</c>, and with the edge to the right of the topmost
            vertex otherwise.
            </para><para>
            If <see cref="P:Tektosyne.Geometry.Polygon.VertexNeighbors"/> is <c>true</c>, the specified <paramref name="index"/>
            enumerates all edges and vertices in an alternating sequence. Counting starts with the
            topmost edge for <see cref="F:Tektosyne.Geometry.PolygonOrientation.OnEdge"/> orientation and with the
            topmost vertex otherwise, continuing clockwise.
            </para><para>
            The returned angle is measured from the center of the <see cref="T:Tektosyne.Geometry.Polygon"/>, and
            increases clockwise from the right-hand side of the x-axis.
            </para><para>
            Valid indices range from zero to <see cref="P:Tektosyne.Geometry.Polygon.Connectivity"/> less one. The angle
            associated with each index is the angle from the central point to a vertex or to the
            middle of an edge, respectively.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.IndexToCompass(System.Int32)">
            <summary>
            Converts the specified index of an edge or vertex to the corresponding <see cref="T:Tektosyne.Geometry.Compass"/> direction.</summary>
            <param name="index">
            The zero-based index of an edge or vertex. This value is taken <see cref="M:Tektosyne.Fortran.Modulo(System.Decimal,System.Decimal)"/> the current <see cref="P:Tektosyne.Geometry.Polygon.Connectivity"/>, and may therefore be
            negative or greater than the maximum index.</param>
            <returns>
            The <see cref="T:Tektosyne.Geometry.Compass"/> direction closest to the edge or vertex with the specified
            <paramref name="index"/>.</returns>
            <remarks>
            <b>IndexToCompass</b> simply invokes <see cref="M:Tektosyne.Geometry.Polygon.AngleToCompass(System.Double)"/> on the result of <see cref="M:Tektosyne.Geometry.Polygon.IndexToAngle(System.Int32)"/> for the specified <paramref name="index"/>. Please refer to <see cref="M:Tektosyne.Geometry.Polygon.IndexToAngle(System.Int32)"/> for an explanation of index values.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.Inflate(System.Double)">
            <summary>
            Creates an inflated copy of the <see cref="T:Tektosyne.Geometry.Polygon"/>.</summary>
            <param name="delta">
            The amount by which to inflate the <see cref="P:Tektosyne.Geometry.Polygon.OuterRadius"/> of the <see cref="T:Tektosyne.Geometry.Polygon"/>.</param>
            <returns>
            A copy of this <see cref="T:Tektosyne.Geometry.Polygon"/> instance whose <see cref="P:Tektosyne.Geometry.Polygon.OuterRadius"/> has been
            inflated by the specified <paramref name="delta"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="delta"/> is equal to or less than the negative value of <see cref="P:Tektosyne.Geometry.Polygon.OuterRadius"/> using a precision of <see cref="F:System.Double.Epsilon"/>.</exception>
            <remarks><para>
            <b>Inflate</b> returns the current <see cref="T:Tektosyne.Geometry.Polygon"/> if the specified <paramref name="delta"/> is zero.
            </para><para>
            Otherwise, <b>Inflate</b> creates a new <see cref="T:Tektosyne.Geometry.Polygon"/> whose <see cref="P:Tektosyne.Geometry.Polygon.OuterRadius"/> equals the current value plus <paramref name="delta"/>. The ratio
            of the new <see cref="P:Tektosyne.Geometry.Polygon.Length"/> to the current value is the same as the ratio of the new
            <see cref="P:Tektosyne.Geometry.Polygon.OuterRadius"/> to the current value.
            </para><para>
            The specified <paramref name="delta"/> may be negative to decrease the size of the new
            <see cref="T:Tektosyne.Geometry.Polygon"/> rather than increase it. The <see cref="P:Tektosyne.Geometry.Polygon.Sides"/> and <see cref="P:Tektosyne.Geometry.Polygon.Orientation"/> values of the new <see cref="T:Tektosyne.Geometry.Polygon"/> are always identical to the
            current values.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.Inscribe(System.Double)">
            <overloads>
            Creates a copy of the <see cref="T:Tektosyne.Geometry.Polygon"/> that is inscribed in the specified circle or
            rectangle.</overloads>
            <summary>
            Creates a copy of the <see cref="T:Tektosyne.Geometry.Polygon"/> that is inscribed in the specified circle.
            </summary>
            <param name="radius">
            The radius of the circle in which to inscribe the <see cref="T:Tektosyne.Geometry.Polygon"/>.</param>
            <returns>
            A copy of this <see cref="T:Tektosyne.Geometry.Polygon"/> instance whose <see cref="P:Tektosyne.Geometry.Polygon.OuterRadius"/> equals the
            specified <paramref name="radius"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="radius"/> is equal to or less than zero.</exception>
            <remarks>
            <b>Inscribe</b> returns the current <see cref="T:Tektosyne.Geometry.Polygon"/> if the specified <paramref name="radius"/> equals the current <see cref="P:Tektosyne.Geometry.Polygon.OuterRadius"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.Inscribe(System.Double,System.Double)">
            <summary>
            Creates a copy of the <see cref="T:Tektosyne.Geometry.Polygon"/> that is inscribed in the specified
            rectangle.</summary>
            <param name="width">
            The width of the rectangle in which to inscribe the <see cref="T:Tektosyne.Geometry.Polygon"/>.</param>
            <param name="height">
            The height of the rectangle in which to inscribe the <see cref="T:Tektosyne.Geometry.Polygon"/>.</param>
            <returns>
            A copy of this <see cref="T:Tektosyne.Geometry.Polygon"/> instance whose <see cref="P:Tektosyne.Geometry.Polygon.Bounds"/> match exactly
            either the specified <paramref name="width"/> or <paramref name="height"/>, and do not
            exceed the corresponding value for the other dimension.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="width"/> or <paramref name="height"/> is equal to or less than zero.
            </exception>
            <remarks>
            <b>Inscribe</b> returns the current <see cref="T:Tektosyne.Geometry.Polygon"/> if the specified <paramref name="width"/> and <paramref name="height"/> equal the <see cref="P:System.Windows.Rect.Size"/> of the
            current <see cref="P:Tektosyne.Geometry.Polygon.Bounds"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.OpposingIndex(System.Int32)">
            <summary>
            Determines the index of the edge or vertex opposite to the edge or vertex with the
            specified index.</summary>
            <param name="index">
            The zero-based index of an edge or vertex. This value is taken <see cref="M:Tektosyne.Fortran.Modulo(System.Decimal,System.Decimal)"/> the current <see cref="P:Tektosyne.Geometry.Polygon.Connectivity"/>, and may therefore be
            negative or greater than the maximum index.</param>
            <returns>
            The zero-based index of the edge or vertex opposite to the specified <paramref name="index"/>. This value is always less than <see cref="P:Tektosyne.Geometry.Polygon.Connectivity"/>.</returns>
            <exception cref="T:Tektosyne.PropertyValueException">
            <see cref="P:Tektosyne.Geometry.Polygon.Connectivity"/> is not divisible by two. Opposing indices only exist if the
            total number of indices is even.</exception>
            <remarks>
            <b>OpposingIndex</b> should use the same index sequence as the <see cref="M:Tektosyne.Geometry.Polygon.AngleToIndex(System.Double)"/> and <see cref="M:Tektosyne.Geometry.Polygon.IndexToAngle(System.Int32)"/> methods.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.Resize(System.Double)">
            <summary>
            Creates a copy of the <see cref="T:Tektosyne.Geometry.Polygon"/> with a different side length.</summary>
            <param name="length">
            The new value for the <see cref="P:Tektosyne.Geometry.Polygon.Length"/> property.</param>
            <returns>
            A copy of this <see cref="T:Tektosyne.Geometry.Polygon"/> instance whose <see cref="P:Tektosyne.Geometry.Polygon.Length"/> equals the
            specified <paramref name="length"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="length"/> is equal to or less than zero.</exception>
            <remarks><para>
            <b>Resize</b> returns the current <see cref="T:Tektosyne.Geometry.Polygon"/> if the specified <paramref name="length"/> equals the current <see cref="P:Tektosyne.Geometry.Polygon.Length"/>.
            </para><para>
            Otherwise, <b>Resize</b> creates a new <see cref="T:Tektosyne.Geometry.Polygon"/> whose <see cref="P:Tektosyne.Geometry.Polygon.Length"/>
            equals the specified <paramref name="length"/>, and whose other properties retain their
            current values.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.ToFigure">
            <overloads>
            Converts the <see cref="T:Tektosyne.Geometry.Polygon"/> to a closed <see cref="T:System.Windows.Media.PathFigure"/>.</overloads>
            <summary>
            Converts the <see cref="T:Tektosyne.Geometry.Polygon"/> to a closed <see cref="T:System.Windows.Media.PathFigure"/>.</summary>
            <returns>
            A closed <see cref="T:System.Windows.Media.PathFigure"/> containing all <see cref="P:Tektosyne.Geometry.Polygon.Vertices"/>.</returns>
            <remarks>
            <b>ToFigure</b> returns the result of the <see cref="M:Tektosyne.Geometry.Polygon.ToFigure(System.Windows.Vector)"/> overload with
            an offset of zero. Once created, the new <see cref="T:System.Windows.Media.PathFigure"/> is frozen and cached
            for repeated access.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Polygon.ToFigure(System.Windows.Vector)">
            <summary>
            Converts the <see cref="T:Tektosyne.Geometry.Polygon"/> to a closed <see cref="T:System.Windows.Media.PathFigure"/>, shifted by a
            specified offset.</summary>
            <param name="offset">
            The offset by which to shift the <see cref="T:System.Windows.Media.PathFigure"/>.</param>
            <returns>
            A closed <see cref="T:System.Windows.Media.PathFigure"/> containing all <see cref="P:Tektosyne.Geometry.Polygon.Vertices"/>, shifted by the
            specified <paramref name="offset"/>.</returns>
        </member>
        <member name="P:Tektosyne.Geometry.Polygon.Bounds">
            <summary>
            Gets the bounding rectangle of the <see cref="T:Tektosyne.Geometry.Polygon"/>.</summary>
            <value>
            The <see cref="T:System.Windows.Rect"/> that circumscribes the <see cref="T:Tektosyne.Geometry.Polygon"/>.</value>
            <remarks><para>
            <b>Bounds</b> always has a positive <see cref="P:System.Windows.Rect.Size"/> in both dimensions. The
            area covered by <b>Bounds</b> is horizontally centered on the <see cref="T:Tektosyne.Geometry.Polygon"/>, and
            also vertically for an even number of <see cref="P:Tektosyne.Geometry.Polygon.Sides"/>.
            </para><para>
            All coordinates are relative to the center of the polygon and use drawing orientation
            rather than mathematical orientation. That is, y-coordinates increase downward and both
            <see cref="P:System.Windows.Rect.Location"/> coordinates are negative.</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Polygon.Connectivity">
            <summary>
            Gets the maximum number of neighbors for the <see cref="T:Tektosyne.Geometry.Polygon"/>.</summary>
            <value>
            The number of <see cref="P:Tektosyne.Geometry.Polygon.Sides"/> if <see cref="P:Tektosyne.Geometry.Polygon.VertexNeighbors"/> is <c>false</c>;
            otherwise, twice that number.</value>
            <remarks><para>
            <b>Connectivity</b> applies to regular grids of adjacent identical <see cref="T:Tektosyne.Geometry.Polygon"/>
            shapes, such as the ones represented by <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            </para><para>
            <b>Connectivity</b> determines the index range used by the various index conversion
            methods, and also the <see cref="P:Tektosyne.Geometry.PolygonGrid.Connectivity"/> of a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> based on this <see cref="T:Tektosyne.Geometry.Polygon"/>.</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Polygon.HasTopIndex">
            <summary>
            Gets a value indicating whether the first <see cref="P:Tektosyne.Geometry.Polygon.Connectivity"/> index corresponds
            to a topmost edge or vertex.</summary>
            <value>
            <c>true</c> if index zero within the <see cref="P:Tektosyne.Geometry.Polygon.Connectivity"/> range corresponds to the
            topmost edge or vertex of the <see cref="T:Tektosyne.Geometry.Polygon"/>; <c>false</c> if this index
            corresponds to the edge to the right of the topmost vertex.</value>
            <remarks><para>
            <b>HasTopIndex</b> returns <c>true</c> if one of the following conditions holds:
            </para><list type="bullet"><item>
            <see cref="P:Tektosyne.Geometry.Polygon.VertexNeighbors"/> is <c>true</c>.
            </item><item>
            <see cref="P:Tektosyne.Geometry.Polygon.Orientation"/> equals <see cref="F:Tektosyne.Geometry.PolygonOrientation.OnEdge"/>, and <see cref="P:Tektosyne.Geometry.Polygon.Sides"/> is divisible by two.
            </item><item>
            <see cref="P:Tektosyne.Geometry.Polygon.Orientation"/> equals <see cref="F:Tektosyne.Geometry.PolygonOrientation.OnVertex"/>, and <see cref="P:Tektosyne.Geometry.Polygon.Sides"/> is not divisible by two.</item></list></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Polygon.InnerRadius">
            <summary>
            Gets the radius of the inscribed circle within the <see cref="T:Tektosyne.Geometry.Polygon"/>.</summary>
            <value>
            The radius of the inscribed circle within the <see cref="T:Tektosyne.Geometry.Polygon"/>.</value>
            <remarks>
            <b>InnerRadius</b> is always greater than zero.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Polygon.Length">
            <summary>
            Gets the length of each side of the <see cref="T:Tektosyne.Geometry.Polygon"/>.</summary>
            <value>
            The length of each side of the <see cref="T:Tektosyne.Geometry.Polygon"/>.</value>
            <remarks>
            <b>Length</b> is always greater than zero.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Polygon.Orientation">
            <summary>
            Gets the orientation of the <see cref="T:Tektosyne.Geometry.Polygon"/>.</summary>
            <value>
            A <see cref="T:Tektosyne.Geometry.PolygonOrientation"/> value indicating the orientation of the <see cref="T:Tektosyne.Geometry.Polygon"/>.</value>
        </member>
        <member name="P:Tektosyne.Geometry.Polygon.OuterRadius">
            <summary>
            Gets the radius of the circumscribed circle around the <see cref="T:Tektosyne.Geometry.Polygon"/>.</summary>
            <value>
            The radius of the circumscribed circle around the <see cref="T:Tektosyne.Geometry.Polygon"/>.</value>
            <remarks>
            <b>OuterRadius</b> is always greater than zero.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Polygon.Sides">
            <summary>
            Gets the number of sides of the <see cref="T:Tektosyne.Geometry.Polygon"/>.</summary>
            <value>
            The number of sides of the <see cref="T:Tektosyne.Geometry.Polygon"/>.</value>
            <remarks>
            <b>Sides</b> is always greater than or equal to three.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Polygon.VertexNeighbors">
            <summary>
            Gets a value indicating whether <see cref="T:Tektosyne.Geometry.Polygon"/> shapes that share only a common
            vertex are considered neighbors.</summary>
            <value>
            <c>true</c> if <see cref="T:Tektosyne.Geometry.Polygon"/> shapes that share only a common vertex are
            considered neighbors; otherwise, <c>false</c>.</value>
            <remarks><para>
            <b>VertexNeighbors</b> applies to regular grids of adjacent identical <see cref="T:Tektosyne.Geometry.Polygon"/> shapes, such as the ones represented by <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.
            </para><para>
            <b>VertexNeighbors</b> always returns <c>false</c> if <see cref="P:Tektosyne.Geometry.Polygon.Sides"/> is greater
            than four, as inner angles of more than 90 degrees prevent the elements of a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> from sharing a vertex without also sharing an edge.
            </para><para>
            <see cref="T:Tektosyne.Geometry.Polygon"/> shapes that share a common edge are always considered neighbors,
            regardless of the value of <b>VertexNeighbors</b>. The maximum number of shared edges,
            and possibly vertices, equals the number of <see cref="P:Tektosyne.Geometry.Polygon.Sides"/>.
            </para><para>
            <b>VertexNeighbors</b> and <see cref="P:Tektosyne.Geometry.Polygon.Sides"/> determine the <see cref="P:Tektosyne.Geometry.Polygon.Connectivity"/>
            of the <see cref="T:Tektosyne.Geometry.Polygon"/> which in turn determines the index range used by <see cref="M:Tektosyne.Geometry.Polygon.AngleToIndex(System.Double)"/> and <see cref="M:Tektosyne.Geometry.Polygon.IndexToAngle(System.Int32)"/>.</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Polygon.Vertices">
            <summary>
            Gets the coordinates of all vertices the <see cref="T:Tektosyne.Geometry.Polygon"/>.</summary>
            <value>
            An <see cref="T:System.Array"/> of <see cref="T:System.Windows.Point"/> values indicating the coordinates of all
            vertices of the <see cref="T:Tektosyne.Geometry.Polygon"/>, starting with the topmost vertex or with the
            right-hand one of two topmost vertices, and continuing clockwise.</value>
            <remarks><para>
            The <see cref="P:System.Array.Length"/> of <b>Vertices</b> always equals <see cref="P:Tektosyne.Geometry.Polygon.Sides"/>.
            </para><para>
            All coordinates are relative to the center of the polygon and use drawing orientation
            rather than mathematical orientation. That is, y-coordinates increase downward and the
            first <b>Vertices</b> element has a negative y-coordinate.</para></remarks>
        </member>
        <member name="T:Tektosyne.Geometry.PolygonGridShift">
            <summary>
            Specifies the shifting of rows or columns in a <see cref="T:Tektosyne.Geometry.PolygonGrid"/>.</summary>
            <remarks><para>
            <b>PolygonGridShift</b> specifies if and how even-numbered rows or columns in a rectangular
            <see cref="T:Tektosyne.Geometry.PolygonGrid"/> are shifted, relative to odd-numbered rows or columns. The valid
            choices for a given <see cref="T:Tektosyne.Geometry.PolygonGrid"/> depend on the underlying <see cref="T:Tektosyne.Geometry.Polygon"/>.
            </para><note type="caution">
            The terms "even-numbered" and "odd-numbered" refer to a counting sequence that starts at one
            for the <see cref="T:Tektosyne.Geometry.PolygonGrid"/> row or column at index position zero. This first row or
            column is therefore considered <em>odd-numbered</em> rather than even-numbered.
            </note></remarks>
        </member>
        <member name="F:Tektosyne.Geometry.PolygonGridShift.None">
            <summary>
            Specifies that no <see cref="T:Tektosyne.Geometry.PolygonGrid"/> rows or columns are shifted.</summary>
            <remarks><para>
            <b>None</b> is the only valid choice for a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> of squares with
            <see cref="F:Tektosyne.Geometry.PolygonOrientation.OnEdge"/> orientation.
            </para><para>
            <b>None</b> is not a valid choice for any other <see cref="T:Tektosyne.Geometry.Polygon"/> type. All <see cref="T:Tektosyne.Geometry.PolygonGridShift"/> values other than <b>None</b> are valid for a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> of squares with <see cref="F:Tektosyne.Geometry.PolygonOrientation.OnVertex"/>
            orientation.</para></remarks>
        </member>
        <member name="F:Tektosyne.Geometry.PolygonGridShift.ColumnUp">
            <summary>
            Specifies that even-numbered <see cref="T:Tektosyne.Geometry.PolygonGrid"/> columns are shifted upward.
            </summary>
            <remarks>
            <b>ColumnUp</b> and <see cref="F:Tektosyne.Geometry.PolygonGridShift.ColumnDown"/> are the only valid choices for a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> of hexagons with <see cref="F:Tektosyne.Geometry.PolygonOrientation.OnEdge"/>
            orientation.</remarks>
        </member>
        <member name="F:Tektosyne.Geometry.PolygonGridShift.ColumnDown">
            <summary>
            Specifies that even-numbered <see cref="T:Tektosyne.Geometry.PolygonGrid"/> columns are shifted downward.
            </summary>
            <remarks>
            <see cref="F:Tektosyne.Geometry.PolygonGridShift.ColumnUp"/> and <b>ColumnDown</b> are the only valid choices for a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> of hexagons with <see cref="F:Tektosyne.Geometry.PolygonOrientation.OnEdge"/>
            orientation.</remarks>
        </member>
        <member name="F:Tektosyne.Geometry.PolygonGridShift.RowRight">
            <summary>
            Specifies that even-numbered <see cref="T:Tektosyne.Geometry.PolygonGrid"/> rows are shifted to the right.
            </summary>
            <remarks>
            <see cref="F:Tektosyne.Geometry.PolygonGridShift.RowLeft"/> and <b>RowRight</b> are the only valid choices for a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> of hexagons with <see cref="F:Tektosyne.Geometry.PolygonOrientation.OnVertex"/>
            orientation.</remarks>
        </member>
        <member name="F:Tektosyne.Geometry.PolygonGridShift.RowLeft">
            <summary>
            Specifies that even-numbered <see cref="T:Tektosyne.Geometry.PolygonGrid"/> rows are shifted to the left.
            </summary>
            <remarks>
            <b>RowLeft</b> and <see cref="F:Tektosyne.Geometry.PolygonGridShift.RowRight"/> are the only valid choices for a <see cref="T:Tektosyne.Geometry.PolygonGrid"/> of hexagons with <see cref="F:Tektosyne.Geometry.PolygonOrientation.OnVertex"/>
            orientation.</remarks>
        </member>
        <member name="T:Tektosyne.Collections.KeyedList`2">
            <summary>
            Provides a generic collection of <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> elements that are
            accessible by index and by key.</summary>
            <typeparam name="TKey">
            The type of the <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> property that all elements in the
            collection inherit from the <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> interface. Keys cannot be null
            references.</typeparam>
            <typeparam name="TValue">
            The type of all elements in the collection. This type must implement <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> with the <typeparamref name="TKey"/> type. If <typeparamref name="TValue"/> is a reference type, elements may be null references.</typeparam>
            <remarks><para>
            <b>KeyedList</b> provides a <see cref="T:Tektosyne.Collections.ListEx`1"/> whose elements contain an embedded key,
            as defined by the <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> interface. Several additional methods
            adopted from the <see cref="T:System.Collections.Generic.SortedList`2"/> class allow direct access by key.
            </para><para>
            The collection may contain multiple identical keys, unless <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/>
            is <c>true</c>. All key access methods return the first occurrence of the specified key.
            Access by index is an O(1) operation but access by key is an O(<em>N</em>) operation, where
            <em>N</em> is the number of elements in the collection.
            </para><para>
            <b>KeyedList</b> also provides several extra features inherited from <see cref="T:Tektosyne.Collections.ListEx`1"/>; please see there for details. Note that <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/>
            now checks for unique keys, rather than unique key-and-value pairs.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyedList`2"/> class.
            </overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyedList`2"/> class that is
            empty and has the default initial capacity.</summary>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.#ctor(System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyedList`2"/> class that is
            empty, has the default initial capacity, and optionally ensures that all keys are
            unique.</summary>
            <param name="isUnique">
            The initial value for the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property.</param>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.#ctor(System.Collections.Generic.IEnumerable{`1})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyedList`2"/> class that
            contains elements copied from the specified collection and has sufficient capacity to 
            accommodate the number of elements copied.</summary>
            <param name="collection">
            The <see cref="T:System.Collections.Generic.IEnumerable`1"/> collection whose <see cref="T:System.Collections.Generic.KeyValuePair`2"/> elements are copied to the new collection.</param>
            <exception cref="T:System.ArgumentNullException"><para>
            <paramref name="collection"/> is a null reference.
            </para><para>-or-</para><para>
            <paramref name="collection"/> contains an element whose embedded key is a null
            reference.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Collections.Generic.IEnumerable{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyedList`2"/> class that is
            empty and has the specified initial capacity.</summary>
            <param name="capacity">
            The number of elements that the new <see cref="T:Tektosyne.Collections.KeyedList`2"/> is initially
            capable of storing.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="capacity"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.#ctor(System.Int32,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyedList`2"/> class that is
            empty, has the specified initial capacity, and optionally ensures that all keys are
            unique.</summary>
            <param name="capacity">
            The number of elements that the new <see cref="T:Tektosyne.Collections.KeyedList`2"/> is initially
            capable of storing.</param>
            <param name="isUnique">
            The initial value for the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="capacity"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.#ctor(Tektosyne.Collections.KeyedList{`0,`1})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyedList`2"/> class that
            contains elements copied from the specified instance and has sufficient capacity to 
            accommodate the number of elements copied.</summary>
            <param name="list">
            The <see cref="T:Tektosyne.Collections.KeyedList`2"/> collection whose elements are copied to the
            new collection.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.List`1.#ctor(System.Collections.Generic.IEnumerable{`0})"/> for details. This constructor also
            copies the value of the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.#ctor(Tektosyne.Collections.KeyedList{`0,`1},System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.KeyedList`2"/> class that is a
            read-only view of the specified instance.</summary>
            <param name="list">
            The <see cref="T:Tektosyne.Collections.KeyedList`2"/> collection that provides the initial values
            for the <see cref="F:Tektosyne.Collections.ListEx`1.InnerList"/> and <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> fields.
            </param>
            <param name="readOnly">
            The initial value for the <see cref="F:Tektosyne.Collections.ListEx`1.ReadOnlyFlag"/> field. This argument must
            be <c>true</c>.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="list"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            <paramref name="readOnly"/> is <c>false</c>.</exception>
            <remarks>
            This constructor is used to create a read-only wrapper around an existing collection.
            The new instance shares the data of the specified <paramref name="list"/>.</remarks>
        </member>
        <member name="F:Tektosyne.Collections.KeyedList`2.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.Collections.KeyedList`2"/>.</summary>
            <remarks>
            Attempting to modify the <b>Empty</b> collection will raise a <see cref="T:System.NotSupportedException"/>. The collection has zero capacity and is guaranteed to
            never change, as there are no writable references to the collection.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.CheckWritable(`1)">
            <summary>
            Checks that the specified value can be added to the <see cref="T:Tektosyne.Collections.KeyedList`2"/>.</summary>
            <param name="value">
            The value to add.</param>
            <exception cref="T:System.ArgumentNullException">
            The key embedded in <paramref name="value"/> is a null reference.</exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.KeyedList`2"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.KeyedList`2"/> already contains the key embedded in <paramref name="value"/>, and the <see cref="T:Tektosyne.Collections.KeyedList`2"/> ensures that all keys are
            unique.</para></exception>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.CheckWritable(System.Int32,`1)">
            <summary>
            Checks that the specified value can be inserted into the <see cref="T:Tektosyne.Collections.KeyedList`2"/> at the specified index.</summary>
            <param name="index">
            The zero-based index at which to insert <paramref name="value"/>.</param>
            <param name="value">
            The value to insert.</param>
            <exception cref="T:System.ArgumentNullException">
            The key embedded in <paramref name="value"/> is a null reference.</exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.KeyedList`2"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.KeyedList`2"/> already contains the key embedded in <paramref name="value"/> at a different index, and the <see cref="T:Tektosyne.Collections.KeyedList`2"/>
            ensures that all keys are unique.</para></exception>
            <remarks>
            <b>CheckWritable</b> does not test for duplicate keys if the specified <paramref name="index"/> is less than zero, or equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.AsReadOnly">
            <summary>
            Creates a read-only view of the <see cref="T:Tektosyne.Collections.KeyedList`2"/>.</summary>
            <returns>
            A read-only wrapper around the <see cref="T:Tektosyne.Collections.KeyedList`2"/>.</returns>
            <remarks><para>
            Attempting to modify the read-only wrapper returned by <b>AsReadOnly</b> will raise a
            <see cref="T:System.NotSupportedException"/>. Note that the original collection may still change,
            and any such changes will be reflected in the read-only view.
            </para><para>
            <b>AsReadOnly</b> buffers the newly created read-only wrapper when the method is first
            called, and returns the buffered value on subsequent calls.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.Clone">
            <summary>
            Creates a shallow copy of the <see cref="T:Tektosyne.Collections.KeyedList`2"/>.</summary>
            <returns>
            A shallow copy of the <see cref="T:Tektosyne.Collections.KeyedList`2"/>.</returns>
            <remarks>
            <b>Clone</b> preserves the value of the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property, but
            not the values of the <see cref="P:Tektosyne.Collections.ListEx`1.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.ListEx`1.IsReadOnly"/> properties.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.ContainsKey(`0)">
            <summary>
            Determines whether the <see cref="T:Tektosyne.Collections.KeyedList`2"/> contains the specified
            key.</summary>
            <param name="key">
            The key to locate.</param>
            <returns>
            <c>true</c> if the <see cref="T:Tektosyne.Collections.KeyedList`2"/> contains an element with
            the specified <paramref name="key"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.ContainsKey(`0)"/> for details.
            </remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.Copy">
            <summary>
            Creates a deep copy of the <see cref="T:Tektosyne.Collections.KeyedList`2"/>.</summary>
            <returns>
            A deep copy of the <see cref="T:Tektosyne.Collections.KeyedList`2"/>.</returns>
            <exception cref="T:System.InvalidCastException">
            <typeparamref name="TValue"/> does not implement <see cref="T:System.ICloneable"/>.</exception>
            <remarks><para>
            <b>Copy</b> is similar to <see cref="M:Tektosyne.Collections.KeyedList`2.Clone"/> but creates a deep copy the <see cref="T:Tektosyne.Collections.KeyedList`2"/> by invoking <see cref="M:System.ICloneable.Clone"/> on all
            <typeparamref name="TValue"/> elements.
            </para><para>
            <b>Copy</b> preserves the value of the <see cref="P:Tektosyne.Collections.ListEx`1.IsUnique"/> property, but
            not the values of the <see cref="P:Tektosyne.Collections.ListEx`1.IsFixedSize"/> and <see cref="P:Tektosyne.Collections.ListEx`1.IsReadOnly"/> properties.</para></remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.GetByIndex(System.Int32)">
            <summary>
            Gets the value at the specified index.</summary>
            <param name="index">
            The zero-based index of the value to get.</param>
            <returns>
            The value at the specified <paramref name="index"/> in the <see cref="T:Tektosyne.Collections.KeyedList`2"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.SortedList.GetByIndex(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.GetByKey(`0)">
            <summary>
            Gets the value associated with the first occurrence of the specified key.</summary>
            <param name="key">
            The key whose value to get.</param>
            <returns>
            The value associated with the first occurrence of <paramref name="key"/> in the <see cref="T:Tektosyne.Collections.KeyedList`2"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">
            <paramref name="key"/> was not found in the <see cref="T:Tektosyne.Collections.KeyedList`2"/>.
            </exception>
            <remarks>
            <b>GetByKey</b> has the same effect as reading the key indexer, <see cref="P:Tektosyne.Collections.KeyedList`2.Item(`0)"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.GetKey(System.Int32)">
            <summary>
            Gets the key at the specified index.</summary>
            <param name="index">
            The zero-based index of the key to get.</param>
            <returns>
            The key at the specified <paramref name="index"/> in the <see cref="T:Tektosyne.Collections.KeyedList`2"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            The <see cref="T:Tektosyne.Collections.KeyedList`2"/> element at the specified <paramref name="index"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.SortedList.GetKey(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.IndexOfKey(`0)">
            <summary>
            Returns the zero-based index of the first occurrence of the specified key.</summary>
            <param name="key">
            The key to locate.</param>
            <returns>
            The zero-based index of the first occurrence of <paramref name="key"/> in the <see cref="T:Tektosyne.Collections.KeyedList`2"/>, if found; otherwise, -1.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.IndexOfKey(`0)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.SetByIndex(System.Int32,`1)">
            <summary>
            Sets the value at the specified index.</summary>
            <param name="index">
            The zero-based index of the value to set.</param>
            <param name="value">
            The value to store at the specified <paramref name="index"/> in the <see cref="T:Tektosyne.Collections.KeyedList`2"/>.</param>
            <exception cref="T:System.ArgumentNullException">
            The key embedded in <paramref name="value"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><para>
            <paramref name="index"/> is less than zero. 
            </para><para>-or-</para><para>
            <paramref name="index"/> is equal to or greater than <see cref="P:Tektosyne.Collections.ListEx`1.Count"/>.
            </para></exception>
            <exception cref="T:System.NotSupportedException"><para>
            The <see cref="T:Tektosyne.Collections.KeyedList`2"/> is read-only.
            </para><para>-or-</para><para>
            The <see cref="T:Tektosyne.Collections.KeyedList`2"/> already contains the key embedded in <paramref name="value"/> at a different index, and the <see cref="T:Tektosyne.Collections.KeyedList`2"/>
            ensures that all keys are unique.</para></exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.SortedList.SetByIndex(System.Int32,System.Object)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.KeyedList`2.TryGetValue(`0,`1@)">
            <summary>
            Gets the value associated with the first occurrence of the specified key.</summary>
            <param name="key">
            The key whose value to get.</param>
            <param name="value">
            The value associated with the first occurrence of <paramref name="key"/>, if found;
            otherwise, the default value for <typeparamref name="TValue"/>.</param>
            <returns>
            <c>true</c> if <paramref name="key"/> was found; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.SortedList`2.TryGetValue(`0,`1@)"/> for details.
            </remarks>
        </member>
        <member name="P:Tektosyne.Collections.KeyedList`2.Item(`0)">
            <summary>
            Gets the value associated with the first occurrence of the specified key.</summary>
            <param name="key">
            The key whose value to get.</param>
            <value>
            The value associated with the first occurrence of the specified <paramref name="key"/>.
            </value>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">
            <paramref name="key"/> does not exist in the <see cref="T:Tektosyne.Collections.KeyedList`2"/>.
            </exception>
            <remarks>
            Please refer to <see cref="P:System.Collections.Generic.SortedList`2.Item(`0)"/> for details.</remarks>
        </member>
        <member name="T:Tektosyne.Win32Api.User">
            <summary>
            Interfaces the Windows system library "user32.dll".</summary>
        </member>
        <member name="M:Tektosyne.Win32Api.User.GetCursorPos(System.Drawing.Point@)">
            <summary>
            Retrieves the cursor's position, in screen coordinates.</summary>
            <param name="point">
            A <see cref="T:System.Drawing.Point"/> structure that receives the screen coordinates of the cursor.
            </param>
            <returns>
            <c>true</c> on success; otherwise, <c>false</c>.</returns>
            <remarks><para>
            The cursor position is always specified in screen coordinates and is not affected by the
            mapping mode of the window that contains the cursor. The input desktop must be the
            current desktop when you call GetCursorPos.
            </para><para>
            Please refer to the Microsoft Platform SDK documentation for further details.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Win32Api.User.WindowFromPoint(System.Drawing.Point)">
            <summary>
            Retrieves a handle to the window that contains the specified point.</summary>
            <param name="point">
            The <see cref="T:System.Drawing.Point"/> structure that defines the point to be checked.</param>
            <returns>
            A handle to the window that contains the specified <paramref name="point"/>.</returns>
            <remarks><para>
            If no window exists at the given point, the return value is zero. If the point is over a
            static text control, the return value is a handle to the window under the static text
            control. Hidden or disabled windows are ignored.
            </para><para>
            This method invokes the <b>WindowFromPoint</b> function defined in the Windows system
            library "user32.dll". Please refer to the Microsoft Platform SDK documentation for
            details.</para></remarks>
        </member>
        <member name="T:Tektosyne.Collections.QueueEx`1">
            <summary>
            Provides a generic first-in, first-out (FIFO) collection of items.</summary>
            <typeparam name="T">
            The type of all items in the queue. If <typeparamref name="T"/> is a reference type, items
            may be null references.</typeparam>
            <remarks><para>
            <b>QueueEx</b> is identical with the standard class <see cref="T:System.Collections.Generic.Queue`1"/> from which it
            derives, except for a few extra features:
            </para><list type="bullet"><item>
            <see cref="P:Tektosyne.Collections.QueueEx`1.IsSynchronized"/> and <see cref="P:Tektosyne.Collections.QueueEx`1.SyncRoot"/> are available
            as public properties, rather than explicit <see cref="T:System.Collections.ICollection"/> implementations.
            </item><item>
            <see cref="M:Tektosyne.Collections.QueueEx`1.Clone"/> creates a shallow copy of the queue, using the <see cref="M:Tektosyne.Collections.QueueEx`1.#ctor(System.Collections.Generic.IEnumerable{`0})"/> constructor that takes a collection argument.
            </item><item>
            <see cref="M:Tektosyne.Collections.QueueEx`1.Copy"/> creates a deep copy of the queue by invoking <see cref="M:System.ICloneable.Clone"/> on each <typeparamref name="T"/> element. This feature requires
            that all copied elements implement the <see cref="T:System.ICloneable"/> interface.
            </item><item>
            <see cref="M:Tektosyne.Collections.QueueEx`1.Equals(System.Collections.ICollection)"/> compares two collections with identical element types for
            value equality of all elements. The collections compare as equal if they contain the same
            elements in the same order.</item></list></remarks>
        </member>
        <member name="M:Tektosyne.Collections.QueueEx`1.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.QueueEx`1"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.QueueEx`1"/> class that is empty and has
            the default initial capacity.</summary>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Queue`1.#ctor"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.QueueEx`1.#ctor(System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.QueueEx`1"/> class that contains elements
            copied from the specified collection and has sufficient capacity to accommodate the
            number of elements copied.</summary>
            <param name="collection">
            The <see cref="T:System.Collections.Generic.IEnumerable`1"/> collection whose elements are copied to the new
            collection.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="collection"/> is a null reference.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Queue`1.#ctor(System.Collections.Generic.IEnumerable{`0})"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.QueueEx`1.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Collections.QueueEx`1"/> class that is empty and has
            the specified initial capacity.</summary>
            <param name="capacity">
            The initial number of elements that the new <see cref="T:Tektosyne.Collections.QueueEx`1"/> can contain.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="capacity"/> is less than zero.</exception>
            <remarks>
            Please refer to <see cref="M:System.Collections.Generic.Queue`1.#ctor(System.Int32)"/> for details.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.QueueEx`1.Clone">
            <summary>
            Creates a shallow copy of the <see cref="T:Tektosyne.Collections.QueueEx`1"/>.</summary>
            <returns>
            A shallow copy of the <see cref="T:Tektosyne.Collections.QueueEx`1"/>.</returns>
        </member>
        <member name="M:Tektosyne.Collections.QueueEx`1.Copy">
            <summary>
            Creates a deep copy of the <see cref="T:Tektosyne.Collections.QueueEx`1"/>.</summary>
            <returns>
            A deep copy of the <see cref="T:Tektosyne.Collections.QueueEx`1"/>.</returns>
            <exception cref="T:System.InvalidCastException">
            <typeparamref name="T"/> does not implement <see cref="T:System.ICloneable"/>.</exception>
            <remarks>
            <b>Copy</b> is similar to <see cref="M:Tektosyne.Collections.QueueEx`1.Clone"/> but creates a deep copy the <see cref="T:Tektosyne.Collections.QueueEx`1"/> by invoking <see cref="M:System.ICloneable.Clone"/> on all <typeparamref name="T"/> elements.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.QueueEx`1.Equals(System.Collections.ICollection)">
            <summary>
            Determines whether the specified collection contains the same elements in the same order
            as the current <see cref="T:Tektosyne.Collections.QueueEx`1"/>.</summary>
            <param name="collection">
            The <see cref="T:System.Collections.ICollection"/> to compare with the current <see cref="T:Tektosyne.Collections.QueueEx`1"/>.
            </param>
            <returns><para>
            <c>true</c> under the following conditions, otherwise <c>false</c>:
            </para><list type="bullet"><item>
            <paramref name="collection"/> is another reference to this <see cref="T:Tektosyne.Collections.QueueEx`1"/>.
            </item><item>
            <paramref name="collection"/> is not a null reference, contains the same number of
            elements as this <see cref="T:Tektosyne.Collections.QueueEx`1"/>, and all elements compare as equal when
            retrieved in the enumeration sequence for each collection.</item></list></returns>
            <remarks>
            <b>Equals</b> calls <see cref="M:Tektosyne.Collections.CollectionsUtility.SequenceEqualUntyped(System.Collections.ICollection,System.Collections.ICollection)"/> to test the
            two collections for value equality.</remarks>
        </member>
        <member name="P:Tektosyne.Collections.QueueEx`1.IsSynchronized">
            <summary>
            Gets a value indicating whether access to the <see cref="T:Tektosyne.Collections.QueueEx`1"/> is synchronized
            (thread-safe).</summary>
            <value>
            <c>true</c> if access to the <see cref="T:Tektosyne.Collections.QueueEx`1"/> is synchronized (thread-safe);
            otherwise, <c>false</c>. The default is <c>false</c>.</value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.Queue.IsSynchronized"/> for details.
            </para><para>
            This property is provided for backwards compatibility only, as none of the
            <b>Tektosyne.Collections</b> classes support synchronized wrappers.</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.QueueEx`1.SyncRoot">
            <summary>
            Gets an object that can be used to synchronize access to the <see cref="T:Tektosyne.Collections.QueueEx`1"/>.
            </summary>
            <value>
            An object that can be used to synchronize access to the <see cref="T:Tektosyne.Collections.QueueEx`1"/>.
            </value>
            <remarks><para>
            Please refer to <see cref="P:System.Collections.Queue.SyncRoot"/> for details.
            </para><para>
            When synchronizing multi-threaded access to the <see cref="T:Tektosyne.Collections.QueueEx`1"/>, obtain a lock
            on the <b>SyncRoot</b> object rather than the collection itself.</para></remarks>
        </member>
        <member name="T:Tektosyne.Windows.MessageDialog">
            <summary>
            Provides an enhanced <see cref="T:System.Windows.MessageBox"/> dialog containing a separate display area for
            an optional second message text.</summary>
            <remarks><para>
            <b>MessageDialog</b> supports most of the features of the built-in <see cref="T:System.Windows.MessageBox"/>
            and optionally accepts a second message text which will be shown in a scrollable <see cref="T:System.Windows.Controls.TextBox"/>. This facility might be used to report technical details, so as to keep the
            primary message text short and obvious.
            </para><para>
            The <b>MessageDialog</b> is resizable if a second message text is specified, with the <see cref="T:System.Windows.Controls.TextBox"/> filling all additional space as the dialog is grown.</para></remarks>
            <summary>
            MessageDialog
            </summary>
        </member>
        <member name="M:Tektosyne.Windows.MessageDialog.#ctor(System.String,System.String,System.String,System.String,System.Windows.MessageBoxButton,System.Windows.Media.ImageSource)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.MessageDialog"/> class.</summary>
            <param name="summary">
            The text to display in the primary message area.</param>
            <param name="caption">
            The text to display in the title bar of the dialog.</param>
            <param name="details">
            The text to display in the secondary message area.</param>
            <param name="detailsCaption">
            The text to display above the secondary message area.</param>
            <param name="buttons">
            A <see cref="T:System.Windows.MessageBoxButton"/> value specifying the buttons to display at the bottom
            of the dialog.</param>
            <param name="image">
            The source for the <see cref="T:System.Windows.Controls.Image"/> to display to the left of the primary message
            area.</param>
            <remarks><para>
            The <see cref="T:Tektosyne.Windows.MessageDialog"/> window will be centered on its <see cref="P:System.Windows.Window.Owner"/> by default, if one exists.
            </para><para>
            All <see cref="T:System.String"/> parameters may be null references or empty strings. If
            <paramref name="details"/> is not a valid string, the secondary message area is hidden
            and the <paramref name="detailsCaption"/> parameter is ignored. In this case, the
            <see cref="P:System.Windows.Window.ResizeMode"/> is also set to <see cref="F:System.Windows.ResizeMode.CanMinimize"/>.
            </para><para>
            When any of the specified <paramref name="buttons"/> is clicked, the <see cref="P:Tektosyne.Windows.MessageDialog.MessageDialogResult"/> property is set to the corresponding <see cref="T:System.Windows.MessageBoxResult"/> value and the <b>MessageDialog</b> is closed. "OK" and "Yes"
            cause the <see cref="M:System.Windows.Window.ShowDialog"/> method to return <c>true</c>, while "Cancel"
            and "No" cause a return value of <c>false</c>.
            </para><para>
            The specified <paramref name="image"/> may be a null reference to indicate that no image
            should appear. Use the <see cref="M:Tektosyne.Windows.WindowsUtility.GetSystemBitmap(System.Windows.MessageBoxImage)"/> method to retrieve
            <see cref="T:System.Windows.Media.Imaging.BitmapSource"/> objects for the predefined <see cref="T:System.Windows.MessageBoxImage"/>
            values.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.MessageDialog.OnContentRendered(System.EventArgs)">
            <summary>
            Raises and handles the <see cref="E:System.Windows.Window.ContentRendered"/> event.</summary>
            <param name="args">
            An <see cref="T:System.EventArgs"/> object containing event data.</param>
            <remarks><para>
            <b>OnContentRendered</b> first raises the <see cref="E:System.Windows.Window.ContentRendered"/> event by
            calling the base class implementation of <see cref="M:System.Windows.Window.OnContentRendered(System.EventArgs)"/>.
            </para><para>
            <b>OnContentRendered</b> then handles the <b>ContentRendered</b> event by checking if
            the <see cref="P:System.Windows.FrameworkElement.MinWidth"/> and <see cref="P:System.Windows.FrameworkElement.MinHeight"/> 
            properties are still zero. If so, they are set to the current values of the <see cref="P:System.Windows.FrameworkElement.ActualWidth"/> and <see cref="P:System.Windows.FrameworkElement.ActualHeight"/> 
            properties, respectively, to ensure a reasonable minimum size.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.MessageDialog.Show(System.Windows.Window,System.String,System.String,System.Exception,System.Windows.MessageBoxButton,System.Windows.Media.ImageSource)">
            <overloads>
            Displays a modal <see cref="T:Tektosyne.Windows.MessageDialog"/>.</overloads>
            <summary>
            Displays a modal <see cref="T:Tektosyne.Windows.MessageDialog"/> with the specified owner, message,
            exception data, buttons, and image.</summary>
            <param name="owner">
            The initial value for the <see cref="P:System.Windows.Window.Owner"/> property of the dialog.</param>
            <param name="summary">
            The text to display in the primary message area.</param>
            <param name="caption">
            The text to display in the title bar of the dialog.</param>
            <param name="exception">
            An <see cref="T:System.Exception"/> object providing additional primary and/or secondary message
            text, or a null reference for no additional text.</param>
            <param name="buttons">
            A <see cref="T:System.Windows.MessageBoxButton"/> value specifying the buttons to display at the bottom
            of the dialog.</param>
            <param name="image">
            The source for the <see cref="T:System.Windows.Controls.Image"/> to display to the left of the primary message
            area.</param>
            <returns>
            A <see cref="T:System.Nullable`1"/> value indicating how the <see cref="T:Tektosyne.Windows.MessageDialog"/>
            was dismissed.</returns>
            <remarks><para>
            <b>Show</b> displays a modal <see cref="T:Tektosyne.Windows.MessageDialog"/> with the specified parameters.
            Please refer to the <see cref="T:Tektosyne.Windows.MessageDialog"/> constructor for details.
            </para><para>
            The primary message text is the specified <paramref name="summary"/>, if any; otherwise,
            the <see cref="P:System.Exception.Message"/> of the specified <paramref name="exception"/>, if
            any; otherwise, a localized message indicating an unknown error.
            </para><para>
            The secondary message area shows data on the specified <paramref name="exception"/> with
            a localized caption reading "Technical Details". The data includes the exception <see cref="P:System.Exception.Message"/>; the exception <see cref="P:Tektosyne.DetailException.Detail"/> for <see cref="T:Tektosyne.DetailException"/> objects; and the full string representation.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.MessageDialog.Show(System.Windows.Window,System.String,System.String,System.String,System.String,System.Windows.MessageBoxButton,System.Windows.Media.ImageSource)">
            <summary>
            Displays a modal <see cref="T:Tektosyne.Windows.MessageDialog"/> with the specified owner, messages,
            captions, buttons, and image.</summary>
            <param name="owner">
            The initial value for the <see cref="P:System.Windows.Window.Owner"/> property of the dialog.</param>
            <param name="summary">
            The text to display in the primary message area.</param>
            <param name="caption">
            The text to display in the title bar of the dialog.</param>
            <param name="details">
            The text to display in the secondary message area.</param>
            <param name="detailsCaption">
            The text to display above the secondary message area.</param>
            <param name="buttons">
            A <see cref="T:System.Windows.MessageBoxButton"/> value specifying the buttons to display at the bottom
            of the dialog.</param>
            <param name="image">
            The source for the <see cref="T:System.Windows.Controls.Image"/> to display to the left of the primary message
            area.</param>
            <returns>
            A <see cref="T:System.Nullable`1"/> value indicating how the <see cref="T:Tektosyne.Windows.MessageDialog"/>
            was dismissed.</returns>
            <remarks><para>
            <b>Show</b> displays a modal <see cref="T:Tektosyne.Windows.MessageDialog"/> with the specified parameters.
            Please refer to the <see cref="T:Tektosyne.Windows.MessageDialog"/> constructor for details.
            </para><para>
            The <see cref="T:Tektosyne.Windows.MessageDialog"/> is centered on the screen if the specified <paramref name="owner"/> is a null reference. If <paramref name="details"/> is valid but <paramref name="detailCaption"/> is not, a localized caption reading "Technical Details" is shown.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.MessageDialog.YesButtonClick(System.Object,System.Windows.RoutedEventArgs)">
            <summary>
            Handles the <see cref="E:System.Windows.Controls.Primitives.ButtonBase.Click"/> event for the "Yes" <see cref="T:System.Windows.Controls.Button"/>.
            </summary>
            <param name="sender">
            The <see cref="T:System.Object"/> where the event handler is attached.</param>
            <param name="args">
            A <see cref="T:System.Windows.RoutedEventArgs"/> object containing event data.</param>
            <remarks>
            <b>YesButtonClick</b> sets the <see cref="P:Tektosyne.Windows.MessageDialog.MessageDialogResult"/> property to <see cref="F:System.Windows.MessageBoxResult.Yes"/> and the <see cref="P:System.Windows.Window.DialogResult"/> property to
            <c>true</c>.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.MessageDialog.NoButtonClick(System.Object,System.Windows.RoutedEventArgs)">
            <summary>
            Handles the <see cref="E:System.Windows.Controls.Primitives.ButtonBase.Click"/> event for the "No" <see cref="T:System.Windows.Controls.Button"/>.
            </summary>
            <param name="sender">
            The <see cref="T:System.Object"/> where the event handler is attached.</param>
            <param name="args">
            A <see cref="T:System.Windows.RoutedEventArgs"/> object containing event data.</param>
            <remarks>
            <b>NoButtonClick</b> sets the <see cref="P:Tektosyne.Windows.MessageDialog.MessageDialogResult"/> property to <see cref="F:System.Windows.MessageBoxResult.No"/> and the <see cref="P:System.Windows.Window.DialogResult"/> property to
            <c>false</c>.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.MessageDialog.OKButtonClick(System.Object,System.Windows.RoutedEventArgs)">
            <summary>
            Handles the <see cref="E:System.Windows.Controls.Primitives.ButtonBase.Click"/> event for the "OK" <see cref="T:System.Windows.Controls.Button"/>.
            </summary>
            <param name="sender">
            The <see cref="T:System.Object"/> where the event handler is attached.</param>
            <param name="args">
            A <see cref="T:System.Windows.RoutedEventArgs"/> object containing event data.</param>
            <remarks>
            <b>OKButtonClick</b> sets the <see cref="P:Tektosyne.Windows.MessageDialog.MessageDialogResult"/> property to <see cref="F:System.Windows.MessageBoxResult.OK"/> and the <see cref="P:System.Windows.Window.DialogResult"/> property to
            <c>true</c>.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.MessageDialog.CancelButtonClick(System.Object,System.Windows.RoutedEventArgs)">
            <summary>
            Handles the <see cref="E:System.Windows.Controls.Primitives.ButtonBase.Click"/> event for the "Cancel" <see cref="T:System.Windows.Controls.Button"/>.
            </summary>
            <param name="sender">
            The <see cref="T:System.Object"/> where the event handler is attached.</param>
            <param name="args">
            A <see cref="T:System.Windows.RoutedEventArgs"/> object containing event data.</param>
            <remarks>
            <b>CancelButtonClick</b> sets the <see cref="P:Tektosyne.Windows.MessageDialog.MessageDialogResult"/> property to <see cref="F:System.Windows.MessageBoxResult.Cancel"/> and the <see cref="P:System.Windows.Window.DialogResult"/> property to
            <c>false</c>.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.MessageDialog.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="P:Tektosyne.Windows.MessageDialog.MessageDialogResult">
            <summary>
            Gets the result of the <see cref="T:Tektosyne.Windows.MessageDialog"/>.</summary>
            <value>
            A <see cref="T:System.Windows.MessageBoxResult"/> value indicating which of the buttons of the <see cref="T:Tektosyne.Windows.MessageDialog"/> was clicked. The default is <see cref="F:System.Windows.MessageBoxResult.None"/>.
            </value>
            <remarks>
            <b>MessageDialogResult</b> always corresponds to the return value of the <see cref="M:System.Windows.Window.ShowDialog"/> method, but encodes the clicked <see cref="T:System.Windows.Controls.Button"/> as a 
            <see cref="T:System.Windows.MessageBoxResult"/> value rather than a <see cref="T:System.Nullable`1"/>.
            </remarks>
        </member>
        <member name="T:Tektosyne.Win32Api.MapiFileTagExt">
            <summary>
            Specifies a message attachment's type at its creation and its current form of encoding so
            that it can be restored to its original type at its destination.</summary>
            <remarks>
            This type mirrors the <b>MapiFileTagExt</b> (Simple MAPI) structure defined in the Platform
            SDK. Please refer to the Microsoft Platform SDK documentation for details.</remarks>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFileTagExt.ulReserved">
            <summary>
            Reserved; must be zero.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFileTagExt.cbTag">
            <summary>
            The size, in bytes, of the value defined by the <see cref="F:Tektosyne.Win32Api.MapiFileTagExt.lpTag"/> member.</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFileTagExt.lpTag">
            <summary>
            A pointer to an X.400 object identifier indicating the type of the attachment in its
            original form, for example "Microsoft Excel worksheet".</summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFileTagExt.cbEncoding">
            <summary>
            The size, in bytes, of the value defined by the <see cref="F:Tektosyne.Win32Api.MapiFileTagExt.lpEncoding"/> member.
            </summary>
        </member>
        <member name="F:Tektosyne.Win32Api.MapiFileTagExt.lpEncoding">
            <summary>
            A pointer to an X.400 object identifier indicating the form in which the attachment is
            currently encoded, for example MacBinary, UUENCODE, or binary.</summary>
        </member>
        <member name="T:Tektosyne.Geometry.PathNode">
            <summary>
            Provides a node for search paths in two-dimensional space.</summary>
            <remarks>
            <b>PathNode</b> provides an object that associates a location in two-dimensional space,
            represented by a <see cref="T:System.Drawing.Point"/> value, with various other data required by the <see cref="T:Tektosyne.Geometry.AStar"/> pathfinding algorithm.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PathNode.#ctor(System.Drawing.Point)">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.PathNode"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.PathNode"/> class with the specified
            location.</summary>
            <param name="location">
            The initial value for the <see cref="P:Tektosyne.Geometry.PathNode.Location"/> property.</param>
            <remarks>
            The <see cref="P:Tektosyne.Geometry.PathNode.Children"/> collection is initialized with a default capacity of eight.
            This is sufficient for an <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> instance that represents a grid of
            squares with connections on all sides and corners.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.PathNode.#ctor(System.Drawing.Point,System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.PathNode"/> class with the specified
            location and children capacity.</summary>
            <param name="location">
            The initial value for the <see cref="P:Tektosyne.Geometry.PathNode.Location"/> property.</param>
            <param name="children">
            The initial capacity for the <see cref="P:Tektosyne.Geometry.PathNode.Children"/> collection.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="children"/> is less than zero.</exception>
            <remarks>
            The <see cref="P:Tektosyne.Geometry.IPlanarGraph.Connectivity"/> of the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> instance
            on which the path search is performed should be specified as the <paramref name="children"/> argument. This avoids memory reallocation as the <see cref="P:Tektosyne.Geometry.PathNode.Children"/> collection grows.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PathNode.Children">
            <summary>
            Gets the list of children of the <see cref="T:Tektosyne.Geometry.PathNode"/>.</summary>
            <value>
            A <see cref="T:System.Collections.Generic.List`1"/> containing all accessible direct neighbors of this <see cref="T:Tektosyne.Geometry.PathNode"/> object.</value>
            <remarks>
            To expand the current search path, each element of the <see cref="P:Tektosyne.Geometry.PathNode.Children"/> collection
            is examined in turn.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PathNode.F">
            <summary>
            Gets the estimated total cost of the current search path.</summary>
            <value>
            The sum of the <see cref="P:Tektosyne.Geometry.PathNode.G"/> and <see cref="P:Tektosyne.Geometry.PathNode.H"/> properties.</value>
            <remarks>
            <b>F</b> returns the estimated total cost of the path from source to target location
            that leads across the location represented by this <see cref="T:Tektosyne.Geometry.PathNode"/> object.
            </remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PathNode.G">
            <summary>
            Gets or sets the total cost from the source location to the <see cref="T:Tektosyne.Geometry.PathNode"/>.
            </summary>
            <value>
            The total cost of the search path that ends with this <see cref="T:Tektosyne.Geometry.PathNode"/> object.
            </value>
            <remarks><para>
            <b>G</b> is a known quantity that represents the total cost to move from the source
            location to the current <see cref="P:Tektosyne.Geometry.PathNode.Location"/>, along the path defined by the chain of
            <see cref="P:Tektosyne.Geometry.PathNode.Parent"/> values.
            </para><para>
            This property returns zero for the <see cref="T:Tektosyne.Geometry.PathNode"/> object that represents the
            source location.</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PathNode.H">
            <summary>
            Gets or sets the estimated total cost from the <see cref="T:Tektosyne.Geometry.PathNode"/> to the target
            location.</summary>
            <value>
            The estimated total cost of the search path that begins with this <see cref="T:Tektosyne.Geometry.PathNode"/>
            object.</value>
            <remarks><para>
            <b>H</b> is an estimated quantity that represents the total cost to move from the
            current <see cref="P:Tektosyne.Geometry.PathNode.Location"/> to the target location.
            </para><para>
            This property returns zero for the <see cref="T:Tektosyne.Geometry.PathNode"/> object that represents the
            target location.</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PathNode.Location">
            <summary>
            Gets the two-dimensional location of the <see cref="T:Tektosyne.Geometry.PathNode"/>.</summary>
            <value>
            The coordinates of the location with which this <see cref="T:Tektosyne.Geometry.PathNode"/> object is
            associated.</value>
            <remarks>
            <b>Location</b> never changes once the object has been constructed.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.PathNode.Next">
            <summary>
            Gets or sets the next <see cref="T:Tektosyne.Geometry.PathNode"/> in a linked list.</summary>
            <value>
            The next <see cref="T:Tektosyne.Geometry.PathNode"/> object in a linked list, or a null reference for the
            last node in a list or an unlinked node.</value>
        </member>
        <member name="P:Tektosyne.Geometry.PathNode.Parent">
            <summary>
            Gets or sets the parent of the <see cref="T:Tektosyne.Geometry.PathNode"/>.</summary>
            <value>
            The preceding <see cref="T:Tektosyne.Geometry.PathNode"/> object in a path that starts at the source
            location, or a null reference for the node that represents the source location.</value>
            <remarks>
            Tracing back through the <b>Parent</b> properties of all <see cref="T:Tektosyne.Geometry.PathNode"/> objects
            eventually leads back to the source location.</remarks>
        </member>
        <member name="T:Tektosyne.Geometry.Coverage">
            <summary>
            Provides a path coverage algorithm.</summary>
            <remarks><para>
            <b>Coverage</b> provides a general-purpose path coverage algorithm for arbitrary instances
            of the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> and <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> interfaces.
            </para><para>
            The path coverage algorithm finds all locations that an <b>IPlanarAgent</b> can reach by any
            movement path that starts on a specified location, and whose total cost does not exceed a
            specified maximum cost.
            </para><para>
            The total cost of a path is defined as the sum of all <see cref="M:Tektosyne.Geometry.IPlanarAgent.GetStepCost(System.Drawing.Point,System.Drawing.Point)"/>
            results for each movement step between two adjacent path locations. Only locations for which
            <see cref="M:Tektosyne.Geometry.IPlanarAgent.CanOccupy(System.Drawing.Point)"/> succeeds are considered reachable.
            </para><note type="caution">
            Multi-step movements are problematic when the <b>IPlanarAgent</b> uses a non-trivial <see cref="M:Tektosyne.Geometry.IPlanarAgent.CanOccupy(System.Drawing.Point)"/> condition. After a successful path search, all found <see cref="P:Tektosyne.Geometry.Coverage.Locations"/> are valid end points for a single-step movement. However, attempting to
            reach any <b>Locations</b> element with multiple movement steps may prove impossible. Since
            the algorithm does not know whether a given intermediate path node will be occupied
            permanently or merely traversed, the path by which a <b>Locations</b> element was reached
            may contain many intermediate nodes for which <see cref="M:Tektosyne.Geometry.IPlanarAgent.CanOccupy(System.Drawing.Point)"/> fails.
            </note></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Coverage.#ctor(Tektosyne.Geometry.IPlanarGraph)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.Coverage"/> class with the specified
            two-dimensional graph.</summary>
            <param name="graph">
            The initial value for the <see cref="P:Tektosyne.Geometry.Coverage.Graph"/> property.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="graph"/> is a null reference.</exception>
        </member>
        <member name="M:Tektosyne.Geometry.Coverage.FindReachable(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Int32)">
            <summary>
            Finds all locations that the specified agent can reach from the specified location with
            the specified maximum path cost.</summary>
            <param name="agent">
            The <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> instances whose reachable locations should be determined.
            </param>
            <param name="source">
            The coordinates of the starting location.</param>
            <param name="maxCost">
            The maximum total cost of the best path from the specified <paramref name="source"/> to
            any reachable location.</param>
            <returns>
            <c>true</c> if one or more locations could be reached from the specified <paramref name="source"/>; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="agent"/> is a null reference.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="maxCost"/> is zero or negative.</exception>
            <remarks><para>
            <b>FindReachable</b> returns <c>false</c> if the specified <paramref name="source"/>
            location is invalid, or if there are no reachable locations whose total path cost is
            equal to or less than the specified <paramref name="maxCost"/>.
            </para><para>
            Otherwise, <b>FindReachable</b> returns <c>true</c> and sets the <see cref="P:Tektosyne.Geometry.Coverage.Locations"/>
            property to the result of the path search. This collection contains only those reachable
            locations for which <see cref="M:Tektosyne.Geometry.IPlanarAgent.CanOccupy(System.Drawing.Point)"/> has succeeded.
            </para><para>
            If <see cref="P:Tektosyne.Geometry.IPlanarAgent.RelaxedRange"/> is <c>true</c> for the specified <paramref name="agent"/>, the <b>Locations</b> collection includes those locations whose total
            path cost exceeds <paramref name="maxCost"/>, but which can be reached from a neighbor
            whose total path cost is less than (but not equal to) <paramref name="maxCost"/>. These
            locations are considered reachable regardless of their actual step costs.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Coverage.ExpandArea(System.Drawing.Point,System.Int32)">
            <summary>
            Expands the current coverage area with all neighbors of the specified location that can
            be reached by the current <see cref="P:Tektosyne.Geometry.Coverage.Agent"/>.</summary>
            <param name="location">
            The current location whose neighbors to examine.</param>
            <param name="cost">
            The total path cost to reach <paramref name="location"/>, measured as the sum of all
            <see cref="M:Tektosyne.Geometry.IPlanarAgent.GetStepCost(System.Drawing.Point,System.Drawing.Point)"/> results for each movement step between
            neighboring locations.</param>
            <remarks><para>
            <b>ExpandArea</b> recursively computes all possible movement paths for the current <see cref="P:Tektosyne.Geometry.Coverage.Agent"/>, adding all valid locations in any affordable path to the <see cref="P:Tektosyne.Geometry.Coverage.Locations"/> collection.
            </para><para>
            <b>ExpandArea</b> never revisits locations that were already reached by a better path.
            The source location specified in the <see cref="M:Tektosyne.Geometry.Coverage.FindReachable(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Int32)"/> call is never added to
            the <b>Locations</b> collection.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.Coverage.InitializeCollections(System.Int32)">
            <summary>
            Clears all result and intermediate collections, and sets their capacity to at least the
            specified value.</summary>
            <param name="capacity">
            The new minimum capacity for all result and intermediate collections.</param>
        </member>
        <member name="P:Tektosyne.Geometry.Coverage.Agent">
            <summary>
            Gets the <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> for the last search.</summary>
            <value>
            The <see cref="T:Tektosyne.Geometry.IPlanarAgent"/> that was supplied to the last invocation of <see cref="M:Tektosyne.Geometry.Coverage.FindReachable(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Int32)"/>. The default is a null reference.</value>
        </member>
        <member name="P:Tektosyne.Geometry.Coverage.Graph">
            <summary>
            Gets the <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> on which all searches are performed.</summary>
            <value>
            An <see cref="T:Tektosyne.Geometry.IPlanarGraph"/> object that defines the two-dimensional graph on which all
            searches are performed.</value>
            <remarks>
            <b>Graph</b> never returns a null reference. This property never changes once the object
            has been constructed.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.Coverage.Locations">
            <summary>
            Gets a list of all locations that were reached by the last successful search.</summary>
            <value>
            A read-only <see cref="T:System.Collections.Generic.IList`1"/> containing the coordinates of all locations that
            were reached by the last successful call to <see cref="M:Tektosyne.Geometry.Coverage.FindReachable(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Int32)"/>, not including
            the source location.</value>
            <remarks>
            <b>Locations</b> never returns a null reference, but it returns an empty collection if
            the last call to <see cref="M:Tektosyne.Geometry.Coverage.FindReachable(Tektosyne.Geometry.IPlanarAgent,System.Drawing.Point,System.Int32)"/> returned <c>false</c>, or if the method has
            not yet been called.</remarks>
        </member>
        <member name="T:Tektosyne.Geometry.LineI">
            <summary>
            Represents a directed line in two-dimensional space, using <see cref="T:System.Int32"/> coordinates.
            </summary>
            <remarks><para>
            The <b>LineI</b> structure holds two <see cref="T:System.Drawing.Point"/> values that indicate the <see cref="P:Tektosyne.Geometry.LineI.Start"/> and <see cref="P:Tektosyne.Geometry.LineI.End"/> coordinates of a directed line. Its <see cref="P:Tektosyne.Geometry.LineI.Angle"/> and <see cref="P:Tektosyne.Geometry.LineI.Length"/> are calculated on demand.
            </para><para>
            Two operators convert to and from <see cref="T:System.Drawing.Rectangle"/> instances. This is a lossless
            conversion as <see cref="T:System.Drawing.Rectangle"/> holds exactly the same data as <b>LineI</b>.
            </para><para>
            Use the <see cref="T:Tektosyne.Geometry.LineF"/> structure to represent directed lines with <see cref="T:System.Single"/>
            coordinates, and the <see cref="T:Tektosyne.Geometry.Line"/> structure to represent directed lines with <see cref="T:System.Double"/> coordinates.</para></remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineI.#ctor(System.Int32,System.Int32,System.Int32,System.Int32)">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.LineI"/> structure.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.LineI"/> structure with the specified start
            and end coordinates.</summary>
            <param name="startX">
            The initial value for the <see cref="P:System.Drawing.Point.X"/> coordinate of the <see cref="P:Tektosyne.Geometry.LineI.Start"/>
            property.</param>
            <param name="startY">
            The initial value for the <see cref="P:System.Drawing.Point.Y"/> coordinate of the <see cref="P:Tektosyne.Geometry.LineI.Start"/>
            property.</param>
            <param name="endX">
            The initial value for the <see cref="P:System.Drawing.Point.X"/> coordinate of the <see cref="P:Tektosyne.Geometry.LineI.End"/>
            property.</param>
            <param name="endY">
            The initial value for the <see cref="P:System.Drawing.Point.Y"/> coordinate of the <see cref="P:Tektosyne.Geometry.LineI.End"/>
            property.</param>
        </member>
        <member name="M:Tektosyne.Geometry.LineI.#ctor(System.Drawing.Point,System.Drawing.Point)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Geometry.LineI"/> structure with the specified start
            and end coordinates.</summary>
            <param name="start">
            The initial value for the <see cref="P:Tektosyne.Geometry.LineI.Start"/> property.</param>
            <param name="end">
            The initial value for the <see cref="P:Tektosyne.Geometry.LineI.End"/> property.</param>
        </member>
        <member name="F:Tektosyne.Geometry.LineI.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.Geometry.LineI"/> instance.</summary>
            <remarks>
            <b>Empty</b> contains a <see cref="T:Tektosyne.Geometry.LineI"/> instance that was created with the default
            constructor.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineI.GetHashCode">
            <summary>
            Returns the hash code for this <see cref="T:Tektosyne.Geometry.LineI"/> instance.</summary>
            <returns>
            An <see cref="T:System.Int32"/> hash code.</returns>
            <remarks>
            <b>GetHashCode</b> returns the result of <see cref="M:System.Drawing.Rectangle.GetHashCode"/> for a <see cref="T:System.Drawing.Rectangle"/> whose edge locations equal the <see cref="P:Tektosyne.Geometry.LineI.Start"/> and <see cref="P:Tektosyne.Geometry.LineI.End"/>
            properties of this <see cref="T:Tektosyne.Geometry.LineI"/> instance.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineI.ToString">
            <summary>
            Returns a <see cref="T:System.String"/> that represents the <see cref="T:Tektosyne.Geometry.LineI"/>.</summary>
            <returns>
            A <see cref="T:System.String"/> containing the coordinates of the <see cref="P:Tektosyne.Geometry.LineI.Start"/> and <see cref="P:Tektosyne.Geometry.LineI.End"/> properties.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.LineI.op_Equality(Tektosyne.Geometry.LineI,Tektosyne.Geometry.LineI)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.Geometry.LineI"/> instances have the same value.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Geometry.LineI"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Geometry.LineI"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.Geometry.LineI.Equals(Tektosyne.Geometry.LineI)"/> method to test the two <see cref="T:Tektosyne.Geometry.LineI"/> instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineI.op_Inequality(Tektosyne.Geometry.LineI,Tektosyne.Geometry.LineI)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.Geometry.LineI"/> instances have different values.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Geometry.LineI"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Geometry.LineI"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is different from the value of
            <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.Geometry.LineI.Equals(Tektosyne.Geometry.LineI)"/> method to test the two <see cref="T:Tektosyne.Geometry.LineI"/> instances for value inequality.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineI.op_Explicit(System.Drawing.Rectangle)~Tektosyne.Geometry.LineI">
            <summary>
            Converts a <see cref="T:System.Drawing.Rectangle"/> to a <see cref="T:Tektosyne.Geometry.LineI"/> extending from the top-left to
            the bottom-right corner.</summary>
            <param name="rectangle">
            The <see cref="T:System.Drawing.Rectangle"/> instance to convert into a <see cref="T:Tektosyne.Geometry.LineI"/> instance.
            </param>
            <returns>
            A <see cref="T:Tektosyne.Geometry.LineI"/> instance whose <see cref="P:Tektosyne.Geometry.LineI.Start"/> and <see cref="P:Tektosyne.Geometry.LineI.End"/>
            properties equal the edge locations of the specified <paramref name="rectangle"/>.
            </returns>
        </member>
        <member name="M:Tektosyne.Geometry.LineI.op_Explicit(Tektosyne.Geometry.LineI)~System.Drawing.Rectangle">
            <summary>
            Converts a <see cref="T:Tektosyne.Geometry.LineI"/> to a <see cref="T:System.Drawing.Rectangle"/> extending from <see cref="P:Tektosyne.Geometry.LineI.Start"/> to <see cref="P:Tektosyne.Geometry.LineI.End"/>.</summary>
            <param name="line">
            The <see cref="T:Tektosyne.Geometry.LineI"/> instance to convert into a <see cref="T:System.Drawing.Rectangle"/> instance.
            </param>
            <returns>
            A <see cref="T:System.Drawing.Rectangle"/> instance whose edge locations equal the values of the <see cref="P:Tektosyne.Geometry.LineI.Start"/> and <see cref="P:Tektosyne.Geometry.LineI.End"/> properties of the specified <paramref name="line"/>.</returns>
        </member>
        <member name="M:Tektosyne.Geometry.LineI.Equals(System.Object)">
            <overloads>
            Determines whether two <see cref="T:Tektosyne.Geometry.LineI"/> instances have the same value.</overloads>
            <summary>
            Determines whether this <see cref="T:Tektosyne.Geometry.LineI"/> instance and a specified object, which must
            be a <see cref="T:Tektosyne.Geometry.LineI"/>, have the same value.</summary>
            <param name="obj">
            An <see cref="T:System.Object"/> to compare to this <see cref="T:Tektosyne.Geometry.LineI"/> instance.</param>
            <returns>
            <c>true</c> if <paramref name="obj"/> is another <see cref="T:Tektosyne.Geometry.LineI"/> instance and its
            value is the same as this instance; otherwise, <c>false</c>.</returns>
            <remarks>
            If the specified <paramref name="obj"/> is another <see cref="T:Tektosyne.Geometry.LineI"/> instance,
            <b>Equals</b> invokes the strongly-typed <see cref="M:Tektosyne.Geometry.LineI.Equals(Tektosyne.Geometry.LineI)"/> overload to test
            the two instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineI.Equals(Tektosyne.Geometry.LineI)">
            <summary>
            Determines whether this instance and a specified <see cref="T:Tektosyne.Geometry.LineI"/> have the same
            value.</summary>
            <param name="line">
            A <see cref="T:Tektosyne.Geometry.LineI"/> to compare to this instance.</param>
            <returns>
            <c>true</c> if the value of <paramref name="line"/> is the same as this instance;
            otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> compares the values of the <see cref="P:Tektosyne.Geometry.LineI.Start"/> and <see cref="P:Tektosyne.Geometry.LineI.End"/>
            properties of the two <see cref="T:Tektosyne.Geometry.LineI"/> instances to test for value equality.
            </remarks>
        </member>
        <member name="M:Tektosyne.Geometry.LineI.Equals(Tektosyne.Geometry.LineI,Tektosyne.Geometry.LineI)">
            <summary>
            Determines whether two specified <see cref="T:Tektosyne.Geometry.LineI"/> instances have the same value.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.Geometry.LineI"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.Geometry.LineI"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> invokes the non-static <see cref="M:Tektosyne.Geometry.LineI.Equals(Tektosyne.Geometry.LineI)"/> overload to test the
            two <see cref="T:Tektosyne.Geometry.LineI"/> instances for value equality.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.LineI.Angle">
            <summary>
            Gets the angle of the <see cref="T:Tektosyne.Geometry.LineI"/>, in radians.</summary>
            <value>
            The angle, measured in radians, of the direction on the Cartesian plane into which the
            line represented by this <see cref="T:Tektosyne.Geometry.LineI"/> instance is pointing.</value>
            <remarks><para>
            <b>Angle</b> returns the result of <see cref="M:System.Math.Atan2(System.Double,System.Double)"/> for the horizontal and
            vertical distances between the <see cref="P:Tektosyne.Geometry.LineI.End"/> and <see cref="P:Tektosyne.Geometry.LineI.Start"/> properties.
            </para><para>
            <b>Angle</b> equals zero if the line represented by this <see cref="T:Tektosyne.Geometry.LineI"/> instance
            extends horizontally to the right, and increases as the line turns clockwise. The
            possible range of values is [-<see cref="F:System.Math.PI"/>, <see cref="F:System.Math.PI"/>].
            </para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.LineI.Degrees">
            <summary>
            Gets the angle of the <see cref="T:Tektosyne.Geometry.LineI"/>, in degrees.</summary>
            <value>
            The angle, measured in degrees, of the direction on the Cartesian plane into which the
            line represented by this <see cref="T:Tektosyne.Geometry.LineI"/> instance is pointing.</value>
            <remarks><para>
            <b>Degrees</b> returns the value of <see cref="P:Tektosyne.Geometry.LineI.Angle"/>, converted to degrees.
            </para><para>
            <b>Degrees</b> equals zero if the line represented by this <see cref="T:Tektosyne.Geometry.LineI"/> instance
            extends horizontally to the right, and increases as the line turns clockwise. The
            possible range of values is [-180, 180].</para></remarks>
        </member>
        <member name="P:Tektosyne.Geometry.LineI.End">
            <summary>
            Gets or sets the end coordinates of the <see cref="T:Tektosyne.Geometry.LineI"/>.</summary>
            <value>
            The coordinates of the point where the line represented by this <see cref="T:Tektosyne.Geometry.LineI"/>
            instance ends.</value>
        </member>
        <member name="P:Tektosyne.Geometry.LineI.Length">
            <summary>
            Gets the absolute length of the <see cref="T:Tektosyne.Geometry.LineI"/>.</summary>
            <value>
            A non-negative <see cref="T:System.Double"/> value indicating the absolute length of line
            represented by this <see cref="T:Tektosyne.Geometry.LineI"/> instance.</value>
        </member>
        <member name="P:Tektosyne.Geometry.LineI.Size">
            <summary>
            Gets the Cartesian dimensions of the <see cref="T:Tektosyne.Geometry.LineI"/>.</summary>
            <value>
            A <see cref="T:System.Drawing.Size"/> value defined as (<b>End.X</b> - <b>Start.X</b>, <b>End.Y</b> -
            <b>Start.Y</b>).</value>
            <remarks>
            The <see cref="P:System.Drawing.Size.Width"/> and <see cref="P:System.Drawing.Size.Height"/> properties of <b>Size</b>
            may be zero or negative, depending on the direction of this <see cref="T:Tektosyne.Geometry.LineI"/>
            instance.</remarks>
        </member>
        <member name="P:Tektosyne.Geometry.LineI.Start">
            <summary>
            Gets or sets the start coordinates of the <see cref="T:Tektosyne.Geometry.LineI"/>.</summary>
            <value>
            The coordinates of the point where the line represented by this <see cref="T:Tektosyne.Geometry.LineI"/>
            instance starts.</value>
        </member>
        <member name="T:Tektosyne.Windows.BitmapBuffer">
            <summary>
            Provides a secondary buffer associated with a <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/>.</summary>
            <remarks><para>
            Prior to .NET 3.5 SP1, the <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> class required a secondary buffer
            when accessing its pixel data. <b>BitmapBuffer</b> provides such a buffer in the form of a
            <see cref="T:System.UInt32"/> array holding color values in the standard <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format.
            </para><para>
            You can permanently associate a <b>BitmapBuffer</b> with a <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/>, or
            exchange pixel data with specified bitmaps. You can directly manipulate the pixel data
            stored in the <b>BitmapBuffer</b>, or use several auxiliary methods for this purpose.
            </para><note type="implementnotes">
            As of .NET 3.5 SP1, the <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> class allows direct access to its own
            <see cref="P:System.Windows.Media.Imaging.WriteableBitmap.BackBuffer"/>. Various helper methods in the <see cref="T:Tektosyne.Windows.BitmapUtility"/> class exploit this feature to duplicate the functionality of
            <b>BitmapBuffer</b> without the need for a secondary buffer. You might still wish to use
            <b>BitmapBuffer</b> as a separate compositing buffer, however.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.#ctor(System.Int32,System.Int32)">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> class with the specified
            width and height.</summary>
            <param name="width">
            The initial <see cref="P:System.Drawing.Size.Width"/> component of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/> property.
            </param>
            <param name="height">
            The initial <see cref="P:System.Drawing.Size.Height"/> component of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/> property.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="width"/> or <paramref name="height"/> is zero or negative.</exception>
            <remarks>
            The <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> property is initialized to a <see cref="T:System.UInt32"/> array whose
            size is the product of the specified <paramref name="width"/> and <paramref name="height"/>. The <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/> property is initialized to a null reference.
            </remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.#ctor(System.Windows.Media.Imaging.WriteableBitmap)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> class with the specified
            <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/>.</summary>
            <param name="bitmap">
            The initial value for the <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/> property.</param>
            <exception cref="T:System.ArgumentException">
            The <see cref="P:System.Windows.Media.Imaging.BitmapSource.Format"/> of <paramref name="bitmap"/> does not equal <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/>.</exception>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="bitmap"/> is a null reference.</exception>
            <remarks><para>
            The <see cref="P:System.Drawing.Size.Width"/> and <see cref="P:System.Drawing.Size.Height"/> components of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/> property are initialized with the <see cref="P:System.Windows.Media.Imaging.BitmapSource.PixelWidth"/>
            and <see cref="P:System.Windows.Media.Imaging.BitmapSource.PixelHeight"/> of the specified <paramref name="bitmap"/>,
            respectively.
            </para><para>
            The <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> property is initialized to a <see cref="T:System.UInt32"/> array big
            enough to hold all pixels in the specified <paramref name="bitmap"/>. The actual pixel
            data is not copied, however. Call <see cref="M:Tektosyne.Windows.BitmapBuffer.Read"/> if you wish to initialize <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> with the pixel data of the <paramref name="bitmap"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.BlendPixel(System.Int32,System.Int32,System.Windows.Media.Color)">
            <summary>
            Blends the specified pixel in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> with the specified <see cref="T:System.Windows.Media.Color"/>.</summary>
            <param name="x">
            The x-coordinate of the pixel to blend with <paramref name="color"/>.</param>
            <param name="y">
            The y-coordinate of the pixel to blend with <paramref name="color"/>.</param>
            <param name="color">
            The <see cref="T:System.Windows.Media.Color"/> to blend with the pixel at the specified location in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</param>
            <remarks><para>
            <b>BlendPixel</b> blends the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> element at the specified <paramref name="x"/> and <paramref name="y"/> coordinates with the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> representation of the specified <paramref name="color"/>.
            </para><para>
            <b>BlendPixel</b> calls <see cref="M:Tektosyne.Windows.BitmapUtility.BlendPbgra32(System.UInt32,System.UInt32)"/> to perform alpha
            blending between the specified <paramref name="color"/> (acting as the overlay) and this
            <see cref="T:Tektosyne.Windows.BitmapBuffer"/> (acting as the blending target). No coordinate checking is
            performed.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.Clear">
            <overloads>
            Clears the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</overloads>
            <summary>
            Clears the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</summary>
            <remarks>
            <b>Clear</b> sets all elements of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array to zero, which is the
            <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> equivalent of transparent black color.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.Clear(System.Windows.Media.Color)">
            <summary>
            Clears the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> with the specified <see cref="T:System.Windows.Media.Color"/>.</summary>
            <param name="color">
            The new <see cref="T:System.Windows.Media.Color"/> for all pixels in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</param>
            <remarks>
            <b>Clear</b> sets all elements of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array to the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> representation of the specified <paramref name="color"/>.
            </remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.Clear(System.Drawing.Rectangle,System.Windows.Media.Color)">
            <summary>
            Clears the specified rectangle in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> with the specified <see cref="T:System.Windows.Media.Color"/>.</summary>
            <param name="bounds">
            The pixel rectangle in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> to fill with the specified
            <paramref name="color"/>.</param>
            <param name="color">
            The new <see cref="T:System.Windows.Media.Color"/> for all pixels within the specified <paramref name="bounds"/> of the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</param>
            <remarks>
            <b>Clear</b> sets all <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> elements within the specified <paramref name="bounds"/> to the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> representation of the
            specified <paramref name="color"/>. No coordinate checking is performed.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.GetPixel(System.Int32,System.Int32)">
            <summary>
            Gets the <see cref="T:System.Windows.Media.Color"/> of the specified pixel in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.
            </summary>
            <param name="x">
            The x-coordinate of the pixel whose <see cref="T:System.Windows.Media.Color"/> to return.</param>
            <param name="y">
            The y-coordinate of the pixel whose <see cref="T:System.Windows.Media.Color"/> to return.</param>
            <returns>
            The <see cref="T:System.Windows.Media.Color"/> of the pixel at the specified location in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</returns>
            <remarks>
            <b>GetPixel</b> returns the <see cref="T:System.Windows.Media.Color"/> equivalent of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/>
            element at the specified <paramref name="x"/> and <paramref name="y"/> coordinates. No
            coordinate checking is performed.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.Grow(System.Int32,System.Int32)">
            <summary>
            Grows the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> to the specified size.</summary>
            <param name="width">
            The new minimum <see cref="P:System.Drawing.Size.Width"/> component of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/> property.
            </param>
            <param name="height">
            The new minimum <see cref="P:System.Drawing.Size.Height"/> component of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/> property.
            </param>
            <remarks><para>
            <b>Grow</b> sets the <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/> property to the specified <paramref name="width"/> and <paramref name="height"/> if one or both exceed the corresponding
            <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/> component; otherwise, <b>Grow</b> does nothing.
            </para><para>
            As usual, changing <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/> reallocates both the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array
            and the associated <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/>, if any. Their existing contents are lost.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.MakeOpaque">
            <overloads>
            Makes the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> fully opaque.</overloads>
            <summary>
            Makes the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> fully opaque.</summary>
            <remarks>
            <b>MakeOpaque</b> replaces all <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> elements with their <see cref="M:Tektosyne.Windows.BitmapUtility.OpaquePbgra32(System.UInt32)"/> equivalents. Fully transparent pixels remain
            unchanged.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.MakeOpaque(System.Drawing.Rectangle)">
            <summary>
            Makes the specified rectangle in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> fully opaque.</summary>
            <param name="bounds">
            The pixel rectangle in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> to make opaque.</param>
            <remarks>
            <b>MakeOpaque</b> replaces all <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> elements within the specified
            <paramref name="bounds"/> with their <see cref="M:Tektosyne.Windows.BitmapUtility.OpaquePbgra32(System.UInt32)"/>
            equivalents. Fully transparent pixels remain unchanged. No coordinate checking is
            performed.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.MakeTransparent(System.Windows.Media.Color)">
            <summary>
            Makes the specified <see cref="T:System.Windows.Media.Color"/> transparent in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.
            </summary>
            <param name="color">
            The <see cref="T:System.Windows.Media.Color"/> to replace with transparent black.</param>
            <remarks><para>
            <b>MakeTransparent</b> sets all fully opaque <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> of the specified
            <paramref name="color"/> to zero, which is the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/>
            equivalent of transparent black color. Partially transparent <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> and
            <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> of any other color remain unchanged.
            </para><para>
            <b>MakeTransparent</b> ignores the alpha channel of the specified <paramref name="color"/> and only replaces fully opaque <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> because the
            imprecision caused by the premultiplication of color channels in the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format would otherwise produce false matches.
            </para><note type="implementnotes">
            The predefined <see cref="P:System.Windows.Media.Colors.Transparent"/> color is transparent <em>white</em> (all
            color channels maximized), not transparent <em>black</em> (all color channels zero).
            That color is not representable in <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format since all
            color channel information of fully transparent color is lost.</note></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.Overlay(System.Int32,System.Int32,Tektosyne.Windows.BitmapBuffer,System.Drawing.Rectangle)">
            <overloads>
            Overlays pixel data from another <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</overloads>
            <summary>
            Overlays pixel data from another <see cref="T:Tektosyne.Windows.BitmapBuffer"/>, with alpha blending.
            </summary>
            <param name="x">
            The x-coordinate where to begin writing in this <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</param>
            <param name="y">
            The y-coordinate where to begin writing in this <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</param>
            <param name="source">
            Another <see cref="T:Tektosyne.Windows.BitmapBuffer"/> containing the rectangle to overlay.</param>
            <param name="bounds">
            The pixel rectangle within the specified <paramref name="source"/> to overlay.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="source"/> is a null reference.</exception>
            <remarks><para>
            <b>Overlay</b> blends all <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> elements within the specified <paramref name="bounds"/> of the specified <paramref name="source"/> buffer with the corresponding
            <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> elements in this <see cref="T:Tektosyne.Windows.BitmapBuffer"/>, starting with the
            specified <paramref name="x"/> and <paramref name="y"/> coordinates.
            </para><para>
            <b>Overlay</b> calls <see cref="M:Tektosyne.Windows.BitmapUtility.BlendPbgra32(System.UInt32,System.UInt32)"/> to perform alpha blending
            between the specified <paramref name="source"/> buffer (acting as the overlay) and this
            <see cref="T:Tektosyne.Windows.BitmapBuffer"/> (acting as the blending target). No coordinate checking is
            performed.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.Overlay(System.Int32,System.Int32,Tektosyne.Windows.BitmapBuffer,System.Drawing.Rectangle,System.Byte)">
            <summary>
            Overlays pixel data from another <see cref="T:Tektosyne.Windows.BitmapBuffer"/>, with the specified alpha
            channel threshold.</summary>
            <param name="x">
            The x-coordinate where to begin writing in this <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</param>
            <param name="y">
            The y-coordinate where to begin writing in this <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</param>
            <param name="source">
            Another <see cref="T:Tektosyne.Windows.BitmapBuffer"/> containing the rectangle to overlay.</param>
            <param name="bounds">
            The pixel rectangle within the specified <paramref name="source"/> to overlay.</param>
            <param name="alpha">
            The alpha channel threshold below which <paramref name="source"/> pixels will be
            ignored.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="source"/> is a null reference.</exception>
            <remarks><para>
            <b>Overlay</b> copies only those <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> elements within the specified
            <paramref name="bounds"/> of the specified <paramref name="source"/> buffer whose alpha
            channel meets or exceeds the specified <paramref name="alpha"/> threshold.
            </para><para>
            The copies are written to the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array of this <see cref="T:Tektosyne.Windows.BitmapBuffer"/>, starting with the specified <paramref name="x"/> and <paramref name="y"/> coordinates. No alpha blending or coordinate checking is performed.
            </para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.Overlay(System.Int32,System.Int32,Tektosyne.Windows.BitmapBuffer,System.Drawing.Rectangle,System.Windows.Media.Color)">
            <summary>
            Overlays pixel data from another <see cref="T:Tektosyne.Windows.BitmapBuffer"/>, with alpha blending.
            </summary>
            <param name="x">
            The x-coordinate where to begin writing in this <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</param>
            <param name="y">
            The y-coordinate where to begin writing in this <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</param>
            <param name="source">
            Another <see cref="T:Tektosyne.Windows.BitmapBuffer"/> containing the rectangle to overlay.</param>
            <param name="bounds">
            The pixel rectangle within the specified <paramref name="source"/> to overlay.</param>
            <param name="color">
            The <see cref="T:System.Windows.Media.Color"/> to substitute for all <paramref name="source"/> pixels.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="source"/> is a null reference.</exception>
            <remarks><para>
            <b>Overlay</b> blends all <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> elements within the specified <paramref name="bounds"/> of the specified <paramref name="source"/> buffer with the corresponding
            <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> elements in this <see cref="T:Tektosyne.Windows.BitmapBuffer"/>, starting with the
            specified <paramref name="x"/> and <paramref name="y"/> coordinates.
            </para><para>
            <b>Overlay</b> calls <see cref="M:Tektosyne.Windows.BitmapUtility.BlendPbgra32(System.UInt32,System.UInt32)"/> to perform alpha blending
            between the specified <paramref name="source"/> buffer (acting as the overlay) and this
            <see cref="T:Tektosyne.Windows.BitmapBuffer"/> (acting as the blending target). No coordinate checking is
            performed.
            </para><para>
            <b>Overlay</b> substitutes the specified <paramref name="color"/> for the actual color
            channels of each <paramref name="source"/> pixel, while using its alpha channel to
            govern alpha blending with the corresponding <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> element. The alpha
            channel of the specified <paramref name="color"/> is ignored.</para></remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.Read">
            <overloads>
            Reads pixel data from a bitmap into the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</overloads>
            <summary>
            Reads pixel data from the associated <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/> into the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</summary>
            <remarks>
            <b>Read</b> replaces the entire contents of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array with the
            pixel data of the associated <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.Read(System.Drawing.Rectangle)">
            <summary>
            Reads pixel data from the specified rectangle in the associated <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/>
            into the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</summary>
            <param name="bounds">
            The pixel rectangle in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> to read.</param>
            <remarks>
            <b>Read</b> replaces the specified <paramref name="bounds"/> within the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array with the pixel data of the associated <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/>. No
            coordinate checking is performed.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.Read(System.Windows.Media.Imaging.BitmapSource)">
            <summary>
            Reads pixel data from the specified <see cref="T:System.Windows.Media.Imaging.BitmapSource"/> into the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</summary>
            <param name="bitmap">
            The <see cref="T:System.Windows.Media.Imaging.BitmapSource"/> to read from.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="bitmap"/> is a null reference.</exception>
            <remarks>
            <b>Read</b> replaces the contents of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array with the pixel data
            of the specified <paramref name="bitmap"/>. The copied area starts at (0,0) and extends
            either to the <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/> of the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> or to that of the
            specified <paramref name="bitmap"/> in each dimension, whichever is smaller.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.SetPixel(System.Int32,System.Int32,System.Windows.Media.Color)">
            <summary>
            Sets the specified pixel in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> to the specified <see cref="T:System.Windows.Media.Color"/>.</summary>
            <param name="x">
            The x-coordinate of the pixel to change to <paramref name="color"/>.</param>
            <param name="y">
            The y-coordinate of the pixel to change to <paramref name="color"/>.</param>
            <param name="color">
            The new <see cref="T:System.Windows.Media.Color"/> for the pixel at the specified location in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</param>
            <remarks>
            <b>SetPixel</b> sets the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> element at the specified <paramref name="x"/> and <paramref name="y"/> coordinates to the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> representation of the specified <paramref name="color"/>.
            No alpha blending or coordinate checking is performed.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.Write">
            <overloads>
            Writes the pixel data of the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> to a bitmap.</overloads>
            <summary>
            Writes the pixel data of the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> to the associated <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/>.</summary>
            <remarks>
            <b>Write</b> replaces the entire pixel data of the associated <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/> with
            the contents of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.Write(System.Drawing.Rectangle)">
            <summary>
            Writes the pixel data of the specified rectangle in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> to
            the associated <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/>.</summary>
            <param name="bounds">
            The pixel rectangle in the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> to write.</param>
            <remarks>
            <b>Write</b> replaces the pixel data within the specified <paramref name="bounds"/> of
            the associated <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/> with the contents of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array.
            No coordinate checking is performed.</remarks>
        </member>
        <member name="M:Tektosyne.Windows.BitmapBuffer.Write(System.Windows.Media.Imaging.WriteableBitmap)">
            <summary>
            Writes the pixel data of the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> to the specified <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/>.</summary>
            <param name="bitmap">
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> to write to.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="bitmap"/> is a null reference.</exception>
            <remarks>
            <b>Write</b> replaces the pixel data of the specified <paramref name="bitmap"/> with the
            contents of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array. The copied area starts at (0,0) and extends
            either to the <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/> of the <see cref="T:Tektosyne.Windows.BitmapBuffer"/> or to that of the
            specified <paramref name="bitmap"/> in each dimension, whichever is smaller.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.BitmapBuffer.Bitmap">
            <summary>
            Gets or sets the <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> associated with the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</summary>
            <value>
            The <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> associated with the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>. The
            default is a null reference.</value>
            <exception cref="T:System.ArgumentException">
            The property is set to a bitmap whose <see cref="P:System.Windows.Media.Imaging.BitmapSource.Format"/> does not equal
            <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/>.</exception>
            <remarks><para>
            A valid <b>Bitmap</b> always has a <see cref="P:System.Windows.Media.Imaging.BitmapSource.Format"/> of  <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/>, and its <see cref="P:System.Windows.Media.Imaging.BitmapSource.PixelWidth"/> and <see cref="P:System.Windows.Media.Imaging.BitmapSource.PixelHeight"/> properties equal the <see cref="P:System.Drawing.Size.Width"/> and
            <see cref="P:System.Drawing.Size.Height"/> components of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/> property, respectively.
            </para><para>
            Setting <b>Bitmap</b> to a new value that is neither a null reference nor identical to
            the current value also updates the <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/> property and reallocates the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array if necessary. The current contents of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/>
            array are lost in this case.</para></remarks>
        </member>
        <member name="P:Tektosyne.Windows.BitmapBuffer.Bounds">
            <summary>
            Gets the bounding rectangle of the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</summary>
            <value>
            The bounding rectangle of the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>, starting at (0,0) and
            extending to the <see cref="P:System.Drawing.Size.Width"/> and <see cref="P:System.Drawing.Size.Height"/> of the current
            <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/>.</value>
            <remarks>
            <b>Bounds</b> is provided as a convenience for methods or calculations that require a
            complete bounding rectangle rather than individual dimensions.</remarks>
        </member>
        <member name="P:Tektosyne.Windows.BitmapBuffer.Pixels">
            <summary>
            Gets the pixel data managed by the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</summary>
            <value>
            A <see cref="T:System.UInt32"/> array containing the pixel data managed by the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</value>
            <remarks><para>
            The size of the <b>Pixels</b> array equals the value of the <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/> property.
            Each array element equates one pixel in <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format. The
            array is automatically reallocated whenever the <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/> property changes. Its
            current contents are lost in this case.
            </para><para>
            Use the <see cref="M:Tektosyne.Windows.BitmapBuffer.Read"/> and <see cref="M:Tektosyne.Windows.BitmapBuffer.Write"/> methods to synchronize the contents
            of the <b>Pixels</b> array with the associated <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/> or with another <see cref="T:System.Windows.Media.Imaging.BitmapSource"/>.</para></remarks>
        </member>
        <member name="P:Tektosyne.Windows.BitmapBuffer.Size">
            <summary>
            Gets or sets the size of the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</summary>
            <value>
            The size of the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>, in pixels.</value>
            <remarks><para>
            <b>Size</b> determines both the number of elements in the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array and
            the <see cref="P:System.Windows.Media.Imaging.BitmapSource.PixelWidth"/> and <see cref="P:System.Windows.Media.Imaging.BitmapSource.PixelHeight"/>
            dimensions of the associated <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/>, if any.
            </para><para>
            Changing <b>Size</b> reallocates the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array as well as any
            associated <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/>. The <see cref="P:System.Windows.Media.Imaging.BitmapSource.DpiX"/> and <see cref="P:System.Windows.Media.Imaging.BitmapSource.DpiY"/> values of the current <see cref="P:Tektosyne.Windows.BitmapBuffer.Bitmap"/> are kept but its
            contents are lost, as are those of the current <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array.
            </para></remarks>
        </member>
        <member name="P:Tektosyne.Windows.BitmapBuffer.Stride">
            <summary>
            Gets the stride of the <see cref="T:Tektosyne.Windows.BitmapBuffer"/>.</summary>
            <value>
            The <see cref="P:System.Drawing.Size.Width"/> component of the current <see cref="P:Tektosyne.Windows.BitmapBuffer.Size"/>, multiplied by
            four.</value>
            <remarks>
            Copying pixel data from a <see cref="T:System.Windows.Media.Imaging.BitmapSource"/> or to a <see cref="T:System.Windows.Media.Imaging.WriteableBitmap"/> methods require the "stride" of the source or target array,
            i.e. the number of bytes per pixel row. Since the <see cref="P:Tektosyne.Windows.BitmapBuffer.Pixels"/> array contains
            pixel data in the <see cref="P:System.Windows.Media.PixelFormats.Pbgra32"/> format, each pixel occupies four
            bytes. <b>Stride</b> therefore returns the current pixel width times four.</remarks>
        </member>
        <member name="T:Tektosyne.DetailException">
            <summary>
            Represents errors that occur during application execution, providing additional information
            on technical details.</summary>
            <remarks><para>
            <b>DetailException</b> extends the <see cref="T:System.Exception"/> class with an additional <see cref="P:Tektosyne.DetailException.Detail"/> property that holds technical details about the error.
            </para><para>
            The <b>Detail</b> property is intended to fill the gap between the standard <see cref="P:System.Exception.Message"/> text, which is usually very brief and unspecific, and the full
            <see cref="M:System.Exception.ToString"/> representation of the exception, which is usually extremely
            lengthy and hard to read.
            </para><para>
            You can also use the <b>Detail</b> property to display exception data not covered by the
            standard string representation. See <see cref="M:Tektosyne.Xml.XmlUtility.GetXmlMessage(System.Exception)"/> for an
            example.</para></remarks>
        </member>
        <member name="M:Tektosyne.DetailException.#ctor">
            <overloads>
            Initializes a new instance of the <see cref="T:Tektosyne.DetailException"/> class.</overloads>
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.DetailException"/> class with default
            properties.</summary>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.DetailException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:Tektosyne.DetailException.Detail"/></term>
            <description>An empty string.</description>
            </item><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:System.Exception.Message"/></term>
            <description>A system-supplied localized description.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.DetailException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.DetailException"/> class with the specified
            error message.</summary>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.DetailException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:Tektosyne.DetailException.Detail"/></term>
            <description>An empty string.</description>
            </item><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>A null reference.</description>
            </item><item>
            <term><see cref="P:System.Exception.Message"/></term>
            <description>The specified <paramref name="message"/>.</description>
            </item></list></remarks>
        </member>
        <member name="M:Tektosyne.DetailException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.DetailException"/> class with the specified
            error message and with the previous exception that is the cause of this <see cref="T:Tektosyne.DetailException"/>.</summary>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <param name="innerException">
            The previous <see cref="T:System.Exception"/> that is the cause of the current <see cref="T:Tektosyne.DetailException"/>.</param>
            <remarks><para>
            The following table shows the initial property values for the new instance of <see cref="T:Tektosyne.DetailException"/>:
            </para><list type="table"><listheader>
            <term>Property</term><description>Value</description>
            </listheader><item>
            <term><see cref="P:Tektosyne.DetailException.Detail"/></term>
            <description>The value of the <see cref="P:System.Exception.Message"/> property of the specified
            <paramref name="innerException"/>.</description>
            </item><item>
            <term><see cref="P:System.Exception.InnerException"/></term>
            <description>The specified <paramref name="innerException"/>.</description>
            </item><item>
            <term><see cref="P:System.Exception.Message"/></term>
            <description>The specified <paramref name="message"/>.</description>
            </item></list><para>
            The constructor calls <see cref="M:Tektosyne.Xml.XmlUtility.GetXmlMessage(System.Exception)"/> to retrieve the value
            of the <see cref="P:System.Exception.Message"/> property of the specified <paramref name="innerException"/>. This means that a localized error location statement will be
            prepended to the new value of the <see cref="P:Tektosyne.DetailException.Detail"/> property if <paramref name="innerException"/> is an object of type <see cref="T:System.Xml.XmlException"/> or
            <see cref="T:System.Xml.Schema.XmlSchemaException"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.DetailException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.DetailException"/> class with serialized
            data.</summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> object providing serialized object data for the <see cref="T:Tektosyne.DetailException"/>.</param>
            <param name="context">
            A <see cref="T:System.Runtime.Serialization.StreamingContext"/> object containing contextual information about the
            source or destination.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="info"/> is a null reference.</exception>
            <remarks><para>
            Please refer to <see cref="M:System.Exception.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"/> for
            details.
            </para><para>
            The value of the <see cref="P:Tektosyne.DetailException.Detail"/> property is deserialized from an additional field,
            named "Detail".</para></remarks>
        </member>
        <member name="M:Tektosyne.DetailException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> object with the data needed to serialize the
            exception.</summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> object that receives the serialized object data of
            the <see cref="T:Tektosyne.DetailException"/>.</param>
            <param name="context">
            A <see cref="T:System.Runtime.Serialization.StreamingContext"/> object containing contextual information about the
            source or destination.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="info"/> is a null reference.</exception>
            <remarks><para>
            Please refer to <see cref="M:System.Exception.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"/> for details.
            </para><para>
            The value of the <see cref="P:Tektosyne.DetailException.Detail"/> property is serialized to an additional field,
            named "Detail".</para></remarks>
        </member>
        <member name="P:Tektosyne.DetailException.Detail">
            <summary>
            Gets or sets technical details about the exception.</summary>
            <value>
            A <see cref="T:System.String"/> containing technical details about the <see cref="T:Tektosyne.DetailException"/>.</value>
            <remarks>
            <b>Detail</b> returns an empty string when set to a null reference.</remarks>
        </member>
        <member name="T:Tektosyne.Net.MapiMail">
            <summary>
            Provides support for the Simple MAPI e-mail protocol.</summary>
            <remarks><para>
            The e-mail support provided by the standard classes of the .NET Framework requires certain
            Windows system files that are not available on consumer versions of the Windows operating
            system. <b>MapiMail</b> relies on the Simple MAPI protocol which is available on all Windows
            versions supported by the .NET Framework and which is fully supported by all Microsoft
            e-mail clients, including the free Outlook Express that comes with MS Internet Explorer.
            </para><para>
            However, users of non-Microsoft e-mail clients might have to perform additional installation
            steps to enable Simple MAPI support. Moreover, such clients usually do not support any
            Simple MAPI features other than sending e-mail. Setup instructions for an application using
            the <b>MapiMail</b> class should notify the user of these possibilities.
            </para><note type="implementnotes">
            Some MAPI functions may change the application's current working directory (CWD). All
            <b>MapiMail</b> methods that invoke MAPI functions therefore record the CWD on entry and
            restore it on exit.</note></remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiMail.Address">
            <summary>
            Allows the user to select recipients from the Simple MAPI address book.</summary>
            <returns>
            An <see cref="T:System.Array"/> of <see cref="T:Tektosyne.Net.MapiAddress"/> instances holding the selected
            address book names and the corresponding e-mail addresses.</returns>
            <exception cref="T:Tektosyne.Net.MapiException">
            <see cref="M:Tektosyne.Win32Api.Mapi.MAPIAddress(System.UIntPtr,System.UIntPtr,System.String,System.UInt32,System.String,System.UInt32,System.IntPtr,Tektosyne.Win32Api.MapiFlags,System.UInt32,System.UInt32@,Tektosyne.Win32Api.SafeMapiHandle@)"/> indicated an error.</exception>
            <remarks><para>
            <b>Address</b> shows a dialog allowing the user to select e-mail recipients from an
            address book, using the Win32 API call <see cref="M:Tektosyne.Win32Api.Mapi.MAPIAddress(System.UIntPtr,System.UIntPtr,System.String,System.UInt32,System.String,System.UInt32,System.IntPtr,Tektosyne.Win32Api.MapiFlags,System.UInt32,System.UInt32@,Tektosyne.Win32Api.SafeMapiHandle@)"/> which is part of
            the Simple MAPI protocol. Only the "To" recipient type is available.
            </para><para>
            <b>Address</b> returns an empty array if the user cancelled the dialog or did not select
            any recipients. No <see cref="T:Tektosyne.Net.MapiException"/> is generated in this case.
            </para><note type="caution">
            <para>Non-Microsoft e-mail clients rarely support <b>MAPIAddress</b>. Some might report
            an error while others might show a nonfunctional dialog or return invalid data. There is
            no workaround other than using a Microsoft program as the default e-mail client.
            </para><para>
            Also note that Simple MAPI does not specify the order in which <b>MAPIAddress</b>
            returns the selected recipients. <b>Address</b> maintains the selection order for
            Outlook Express, but the order may be reversed or completely arbitrary for other e-mail
            clients.</para></note></remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiMail.GetErrorString(Tektosyne.Win32Api.MapiError)">
            <summary>
            Returns a localized description of the specified MAPI error code.</summary>
            <param name="code">
            A <see cref="T:Tektosyne.Win32Api.MapiError"/> value indicating the MAPI error code whose description to
            retrieve.</param>
            <returns>
            A localized message that describes the condition indicated by <paramref name="code"/>.
            </returns>
            <remarks>
            <b>GetErrorString</b> returns a generic message indicating an unknown MAPI error if
            there is no specific message for the specified <paramref name="code"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiMail.GetErrorStringAndCode(Tektosyne.Win32Api.MapiError)">
            <summary>
            Returns a localized description of the specified MAPI error code, followed by the
            numerical code itself.</summary>
            <param name="code">
            A <see cref="T:Tektosyne.Win32Api.MapiError"/> value indicating the MAPI error code whose description to
            retrieve.</param>
            <returns>
            A localized message that describes the condition indicated by <paramref name="code"/>,
            followed by the numerical <paramref name="code"/> itself.</returns>
            <remarks>
            <b>GetErrorString</b> returns a generic message indicating an unknown MAPI error if
            there is no specific message for the specified <paramref name="code"/>.</remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiMail.ResolveName(System.String)">
            <summary>
            Resolves a recipient name using the Simple MAPI address book.</summary>
            <param name="name">
            Recipient name to be resolved. This name may be incomplete, misspelled, or otherwise
            ambiguous.</param>
            <returns>
            A <see cref="T:Tektosyne.Net.MapiAddress"/> holding the unambiguous address book name that is the
            closest match for the specified <paramref name="name"/>, and the corresponding default
            e-mail address.</returns>
            <exception cref="T:Tektosyne.ArgumentNullOrEmptyException">
            <paramref name="name"/> is a null reference or an empty string.</exception>
            <exception cref="T:Tektosyne.Net.MapiException">
            <see cref="M:Tektosyne.Win32Api.Mapi.MAPIResolveName(System.UIntPtr,System.UIntPtr,System.String,Tektosyne.Win32Api.MapiFlags,System.UInt32,Tektosyne.Win32Api.SafeMapiHandle@)"/> indicated an error.</exception>
            <remarks><para>
            <b>ResolveName</b> determines the unambiguous address book entry of the specified
            recipient, using the Win32 API call <see cref="M:Tektosyne.Win32Api.Mapi.MAPIResolveName(System.UIntPtr,System.UIntPtr,System.String,Tektosyne.Win32Api.MapiFlags,System.UInt32,Tektosyne.Win32Api.SafeMapiHandle@)"/> which is part of
            the Simple MAPI protocol.
            </para><para>
            If no match is found or the specified <paramref name="name"/> resolves to more than one
            address book entry, the user is presented with an address book dialog and asked to
            select an entry. User cancellation generates a <see cref="T:Tektosyne.Net.MapiException"/> whose <see cref="P:Tektosyne.Net.MapiException.Code"/> may be <see cref="P:Tektosyne.Net.MapiException.Abort"/> but also any other
            <see cref="T:Tektosyne.Win32Api.MapiError"/> code, depending on the MAPI server.
            </para><note type="caution">
            Non-Microsoft e-mail clients rarely support <b>MAPIResolveName</b>. Some might report an
            error while others might return empty strings or invalid data. There is no workaround
            other than using a Microsoft program as the default e-mail client.</note></remarks>
        </member>
        <member name="M:Tektosyne.Net.MapiMail.SendMail(System.String,System.String,Tektosyne.Net.MapiAddress[],Tektosyne.Net.MapiAddress[])">
            <summary>
            Creates and sends an e-mail message using the Simple MAPI protocol.</summary>
            <param name="subject">
            The subject line of the e-mail message.</param>
            <param name="noteText">
            The text of the e-mail message.</param>
            <param name="recipients">
            An <see cref="T:System.Array"/> of <see cref="T:Tektosyne.Net.MapiAddress"/> instances holding the display names
            and SMTP addresses of all message recipients. The protocol identifier "smtp:" is
            automatically prepended to any non-empty addresses without this prefix.</param>
            <param name="attachments">
            An <see cref="T:System.Array"/> of <see cref="T:Tektosyne.Net.MapiAddress"/> instances holding the display names
            and fully qualified local file paths of any attachment files sent to the <paramref name="recipients"/>.</param>
            <exception cref="T:Tektosyne.Net.MapiException">
            <see cref="M:Tektosyne.Win32Api.Mapi.MAPISendMail(System.UIntPtr,System.UIntPtr,Tektosyne.Win32Api.MapiMessage,Tektosyne.Win32Api.MapiFlags,System.UInt32)"/> indicated an error.</exception>
            <remarks><para>
            <b>SendMail</b> creates and sends an e-mail message with optional file attachments,
            using the Win32 API call <see cref="M:Tektosyne.Win32Api.Mapi.MAPISendMail(System.UIntPtr,System.UIntPtr,Tektosyne.Win32Api.MapiMessage,Tektosyne.Win32Api.MapiFlags,System.UInt32)"/> which is part of the Simple
            MAPI protocol. The originator is left undefined which will cause Simple MAPI to assert
            the user's default e-mail account as the originator.
            </para><para>
            The <paramref name="subject"/> and <paramref name="noteText"/> parameters may be a null
            reference or an empty string to leave the corresponding field blank. The <paramref name="recipients"/> and <paramref name="attachments"/> parameters may be null references
            or empty arrays to create a message without recipients or file attachments,
            respectively.
            </para><para>
            The e-mail message is presented to the user who can choose to edit (filling in any blank
            fields or adding text as desired), send, or cancel the message. User cancellation
            generates a <see cref="T:Tektosyne.Net.MapiException"/> whose <see cref="P:Tektosyne.Net.MapiException.Code"/> is <see cref="P:Tektosyne.Net.MapiException.Abort"/>.</para></remarks>
        </member>
        <member name="T:Tektosyne.ThrowHelper">
            <summary>
            Provides helper methods for throwing exceptions.</summary>
            <remarks><para>
            <b>ThrowHelper</b> provides several methods that merely throw the <see cref="T:System.Exception"/>
            indicated by the method name, with the specified arguments. The purpose of these methods is
            to help the JIT compiler generate more efficient machine code.
            </para><para>
            Every <c>throw</c> statement translates into a surprisingly large amount of machine code –
            around 30-60 extra bytes compared to an equivalent <b>ThrowHelper</b> call, depending on the
            target platform and optimization settings. Composing error messages with <see cref="M:System.String.Format(System.String,System.Object)"/> calls further increases the overhead.
            </para><para>
            This has two detrimental effects on methods that contain <c>throw</c> statements. First,
            they are much more likely to exceed the maximum code size for inlining. Second, they carry a
            significant amount of "dead" code that is never run during normal execution but may still
            consume system resources.
            </para><para>
            Using <b>ThrowHelper</b> calls instead of explicit <c>throw</c> statements will translate
            your methods into smaller machine code. This should improve overall throughput and may even
            render some methods eligible for inlining.</para></remarks>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowArgumentException(System.String,System.String)">
            <summary>
            Throws an <see cref="T:System.ArgumentException"/>.</summary>
            <param name="paramName">
            The name of the parameter that caused the exception.</param>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <remarks>
            <b>ThrowArgumentException</b> reverses the order of <paramref name="paramName"/> and
            <paramref name="message"/> compared to the <see cref="T:System.ArgumentException"/> constructor,
            for conformance with other <see cref="T:Tektosyne.ThrowHelper"/> methods.</remarks>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowArgumentExceptionWithFormat(System.String,System.String,System.Object)">
            <summary>
            Throws an <see cref="T:System.ArgumentException"/> with a formatted error message.</summary>
            <param name="paramName">
            The name of the parameter that caused the exception.</param>
            <param name="format">
            A composite <see cref="M:System.String.Format(System.String,System.Object)"/> string for the error message that specifies the
            reason for the exception.</param>
            <param name="argument">
            The argument for the <paramref name="format"/> string.</param>
            <remarks>
            <b>ThrowArgumentException</b> reverses the order of <paramref name="paramName"/> and
            <paramref name="message"/> compared to the <see cref="T:System.ArgumentException"/> constructor,
            for conformance with other <see cref="T:Tektosyne.ThrowHelper"/> methods.</remarks>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowArgumentNullException(System.String)">
            <overloads>
            Throws an <see cref="T:System.ArgumentNullException"/>.</overloads>
            <summary>
            Throws an <see cref="T:System.ArgumentNullException"/> with the specified parameter name.
            </summary>
            <param name="paramName">
            The name of the parameter that caused the exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowArgumentNullException(System.String,System.String)">
            <summary>
            Throws an <see cref="T:System.ArgumentNullException"/> with the specified parameter name and
            error message.</summary>
            <param name="paramName">
            The name of the parameter that caused the exception.</param>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowArgumentNullOrEmptyException(System.String)">
            <summary>
            Throws an <see cref="T:Tektosyne.ArgumentNullOrEmptyException"/>.</summary>
            <param name="paramName">
            The name of the parameter that caused the exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowArgumentOutOfRangeException(System.String,System.Object,System.String)">
            <summary>
            Throws an <see cref="T:System.ArgumentOutOfRangeException"/>.</summary>
            <param name="paramName">
            The name of the parameter that caused the exception.</param>
            <param name="actualValue">
            The actual value of the parameter that caused the exception.</param>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowArgumentOutOfRangeExceptionWithFormat(System.String,System.Object,System.String,System.Object)">
            <overloads>
            Throws an <see cref="T:System.ArgumentOutOfRangeException"/> with a formatted error message.
            </overloads>
            <summary>
            Throws an <see cref="T:System.ArgumentOutOfRangeException"/> with a formatted error message and a
            single argument.</summary>
            <param name="paramName">
            The name of the parameter that caused the exception.</param>
            <param name="actualValue">
            The actual value of the parameter that caused the exception.</param>
            <param name="format">
            A composite <see cref="M:System.String.Format(System.String,System.Object)"/> string for the error message that specifies the
            reason for the exception.</param>
            <param name="argument">
            The argument for the <paramref name="format"/> string.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowArgumentOutOfRangeExceptionWithFormat(System.String,System.Object,System.String,System.Object,System.Object)">
            <summary>
            Throws an <see cref="T:System.ArgumentOutOfRangeException"/> with a formatted error message and
            two arguments.</summary>
            <param name="paramName">
            The name of the parameter that caused the exception.</param>
            <param name="actualValue">
            The actual value of the parameter that caused the exception.</param>
            <param name="format">
            A composite <see cref="M:System.String.Format(System.String,System.Object)"/> string for the error message that specifies the
            reason for the exception.</param>
            <param name="arg0">
            The first argument for the <paramref name="format"/> string.</param>
            <param name="arg1">
            The second argument for the <paramref name="format"/> string.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowDetailException(System.String)">
            <overloads>
            Throws a <see cref="T:Tektosyne.DetailException"/>.</overloads>
            <summary>
            Throws a <see cref="T:Tektosyne.DetailException"/> with the specified error message.</summary>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowDetailException(System.String,System.Exception)">
            <summary>
            Throws a <see cref="T:Tektosyne.DetailException"/> with the specified error message and previous
            exception.</summary>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <param name="innerException">
            The previous <see cref="T:System.Exception"/> that is the cause of the current exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowDetailExceptionWithFormat(System.String,System.Object)">
            <overloads>
            Throws a <see cref="T:Tektosyne.DetailException"/> with a formatted error message.</overloads>
            <summary>
            Throws a <see cref="T:Tektosyne.DetailException"/> with a formatted error message.</summary>
            <param name="format">
            A composite <see cref="M:System.String.Format(System.String,System.Object)"/> string for the error message that specifies the
            reason for the exception.</param>
            <param name="argument">
            The argument for the <paramref name="format"/> string.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowDetailExceptionWithFormat(System.String,System.Object,System.Exception)">
            <summary>
            Throws a <see cref="T:Tektosyne.DetailException"/> with a formatted error message and the specified
            previous exception.</summary>
            <param name="format">
            A composite <see cref="M:System.String.Format(System.String,System.Object)"/> string for the error message that specifies the
            reason for the exception.</param>
            <param name="argument">
            The argument for the <paramref name="format"/> string.</param>
            <param name="innerException">
            The previous <see cref="T:System.Exception"/> that is the cause of the current exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowFileNotFoundException(System.String,System.String)">
            <summary>
            Throws a <see cref="T:System.IO.FileNotFoundException"/>.</summary>
            <param name="fileName">
            The name of the file that caused the exception.</param>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
            <remarks>
            <b>ThrowFileNotFoundException</b> reverses the order of <paramref name="fileName"/> and
            <paramref name="message"/> compared to the <see cref="T:System.IO.FileNotFoundException"/>
            constructor, for conformance with other <see cref="T:Tektosyne.ThrowHelper"/> methods.</remarks>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowInvalidEnumArgumentException(System.String,System.Int32,System.Type)">
            <summary>
            Throws an <see cref="T:System.ComponentModel.InvalidEnumArgumentException"/>.</summary>
            <param name="paramName">
            The name of the parameter that caused the exception.</param>
            <param name="actualValue">
            The actual value of the parameter that caused the exception.</param>
            <param name="enumClass">
            The <see cref="T:System.Enum"/> type of the parameter that caused the exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowInvalidOperationException(System.String)">
            <summary>
            Throws an <see cref="T:System.InvalidOperationException"/>.</summary>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowInvalidOperationExceptionWithFormat(System.String,System.Object)">
            <summary>
            Throws an <see cref="T:System.InvalidOperationException"/> with a formatted error message.
            </summary>
            <param name="format">
            A composite <see cref="M:System.String.Format(System.String,System.Object)"/> string for the error message that specifies the
            reason for the exception.</param>
            <param name="argument">
            The argument for the <paramref name="format"/> string.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowKeyMismatchException(System.Object,System.Object)">
            <summary>
            Throws a <see cref="T:Tektosyne.Collections.KeyMismatchException"/>.</summary>
            <param name="key">
            The <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> that was found or stored in a <see cref="T:System.Collections.Generic.KeyValuePair`2"/> associated with <paramref name="valueKey"/>.</param>
            <param name="valueKey">
            The <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> that was found or stored in an <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance associated with <paramref name="key"/>.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowKeyNotFoundException(System.Object)">
            <summary>
            Throws a <see cref="T:System.Collections.Generic.KeyNotFoundException"/>.</summary>
            <param name="key">
            The key that was not found.</param>
            <remarks>
            <b>ThrowKeyNotFoundException</b> creates a localized error message that contains a
            string representation of the specified <paramref name="key"/>.</remarks>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowMapiException(Tektosyne.Win32Api.MapiError)">
            <summary>
            Throws a <see cref="T:Tektosyne.Net.MapiException"/>.</summary>
            <param name="code">
            The code of the MAPI or Simple MAPI error that caused the exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowNotImplementedException(System.String)">
            <summary>
            Throws a <see cref="T:System.NotImplementedException"/>.</summary>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowNotSupportedException(System.String)">
            <summary>
            Throws a <see cref="T:System.NotSupportedException"/>.</summary>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowObjectDisposedException(System.String)">
            <summary>
            Throws an <see cref="T:System.ObjectDisposedException"/>.</summary>
            <param name="objectName">
            The name of the disposed object. This argument may be a null reference.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowPropertyValueException(System.String,System.String)">
            <overloads>
            Throws a <see cref="T:Tektosyne.PropertyValueException"/>.</overloads>
            <summary>
            Throws a <see cref="T:Tektosyne.PropertyValueException"/> with the specified property name and error
            message.</summary>
            <param name="propertyName">
            The name of the property that caused the exception.</param>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowPropertyValueException(System.String,System.Object,System.String)">
            <summary>
            Throws a <see cref="T:Tektosyne.PropertyValueException"/> with the specified property name and value
            and error message.</summary>
            <param name="propertyName">
            The name of the property that caused the exception.</param>
            <param name="actualValue">
            The actual value of the property that caused the exception.</param>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowPropertyValueExceptionWithFormat(System.String,System.Object,System.String,System.Object)">
            <summary>
            Throws a <see cref="T:Tektosyne.PropertyValueException"/> with the specified property name and value
            and formatted error message.</summary>
            <param name="propertyName">
            The name of the property that caused the exception.</param>
            <param name="actualValue">
            The actual value of the property that caused the exception.</param>
            <param name="format">
            A composite <see cref="M:System.String.Format(System.String,System.Object)"/> string for the error message that specifies the
            reason for the exception.</param>
            <param name="argument">
            The argument for the <paramref name="format"/> string.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowTypeLoadException(System.String)">
            <summary>
            Throws a <see cref="T:System.TypeLoadException"/>.</summary>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowXmlException(System.String)">
            <summary>
            Throws an <see cref="T:System.Xml.XmlException"/>.</summary>
            <param name="message">
            The error message that specifies the reason for the exception.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowXmlExceptionWithFormat(System.String,System.Object)">
            <overloads>
            Throws an <see cref="T:System.Xml.XmlException"/> with a formatted error message.</overloads>
            <summary>
            Throws an <see cref="T:System.Xml.XmlException"/> with a formatted error message and a single
            argument.</summary>
            <param name="format">
            A composite <see cref="M:System.String.Format(System.String,System.Object)"/> string for the error message that specifies the
            reason for the exception.</param>
            <param name="argument">
            The argument for the <paramref name="format"/> string.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowXmlExceptionWithFormat(System.String,System.Object,System.Object)">
            <summary>
            Throws an <see cref="T:System.Xml.XmlException"/> with a formatted error message and two arguments.
            </summary>
            <param name="format">
            A composite <see cref="M:System.String.Format(System.String,System.Object)"/> string for the error message that specifies the
            reason for the exception.</param>
            <param name="arg0">
            The first argument for the <paramref name="format"/> string.</param>
            <param name="arg1">
            The second argument for the <paramref name="format"/> string.</param>
        </member>
        <member name="M:Tektosyne.ThrowHelper.ThrowXmlExceptionWithFormat(System.String,System.Object,System.Object,System.Object)">
            <summary>
            Throws an <see cref="T:System.Xml.XmlException"/> with a formatted error message and three arguments.
            </summary>
            <param name="format">
            A composite <see cref="M:System.String.Format(System.String,System.Object)"/> string for the error message that specifies the
            reason for the exception.</param>
            <param name="arg0">
            The first argument for the <paramref name="format"/> string.</param>
            <param name="arg1">
            The second argument for the <paramref name="format"/> string.</param>
            <param name="arg2">
            The second argument for the <paramref name="format"/> string.</param>
        </member>
        <member name="T:Tektosyne.OrdinalString">
            <summary>
            Provides a <see cref="T:System.String"/> with implicit natural sorting, using <see cref="F:System.StringComparison.Ordinal"/> sorting rules.</summary>
            <remarks><para>
            <b>OrdinalString</b> is an immmutable structure that relies on the <see cref="M:Tektosyne.StringUtility.CompareOrdinal(System.String,System.String)"/> method to provide implicit natural sorting for a
            wrapped <see cref="T:System.String"/>, using <see cref="F:System.StringComparison.Ordinal"/> sorting rules.
            </para><para>
            Use this structure when specifying an explicit <see cref="T:System.String"/> sorter is inconvenient.
            A similar structure, <see cref="T:Tektosyne.NaturalString"/>, provides implicit natural sorting with the
            sorting rules of the <see cref="F:System.StringComparison.CurrentCulture"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.OrdinalString.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Tektosyne.OrdinalString"/> structure with the
            specified <see cref="T:System.String"/> value.</summary>
            <param name="value">
            The initial value for the <see cref="P:Tektosyne.OrdinalString.Value"/> property.</param>
        </member>
        <member name="F:Tektosyne.OrdinalString.Empty">
            <summary>
            An empty read-only <see cref="T:Tektosyne.OrdinalString"/> instance.</summary>
            <remarks>
            <b>Empty</b> contains a <see cref="T:Tektosyne.OrdinalString"/> instance that was created with the
            default constructor.</remarks>
        </member>
        <member name="M:Tektosyne.OrdinalString.GetHashCode">
            <summary>
            Returns the hash code for this instance of <see cref="T:Tektosyne.OrdinalString"/>.</summary>
            <returns>
            An <see cref="T:System.Int32"/> hash code for the current <see cref="T:Tektosyne.OrdinalString"/>.</returns>
            <remarks>
            <b>GetHashCode</b> returns the <see cref="M:System.String.GetHashCode"/> result for the current
            <see cref="P:Tektosyne.OrdinalString.Value"/> if it is not a null reference; otherwise, zero.</remarks>
        </member>
        <member name="M:Tektosyne.OrdinalString.ToString">
            <summary>
            Returns a <see cref="T:System.String"/> that represents the <see cref="T:Tektosyne.OrdinalString"/>.
            </summary>
            <returns>
            The result of the <see cref="M:Tektosyne.StringUtility.Validate(System.String)"/> for the value of the <see cref="P:Tektosyne.OrdinalString.Value"/> property.</returns>
        </member>
        <member name="M:Tektosyne.OrdinalString.op_Equality(Tektosyne.OrdinalString,Tektosyne.OrdinalString)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.OrdinalString"/> objects have the same value.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.OrdinalString"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.OrdinalString"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.OrdinalString.Equals(Tektosyne.OrdinalString,Tektosyne.OrdinalString)"/> method to
            test the two <see cref="T:Tektosyne.OrdinalString"/> instances for value equality.</remarks>
        </member>
        <member name="M:Tektosyne.OrdinalString.op_Inequality(Tektosyne.OrdinalString,Tektosyne.OrdinalString)">
            <summary>
            Determines whether two <see cref="T:Tektosyne.OrdinalString"/> objects have different values.
            </summary>
            <param name="x">
            The first <see cref="T:Tektosyne.OrdinalString"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.OrdinalString"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is different from the value of
            <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.OrdinalString.Equals(Tektosyne.OrdinalString,Tektosyne.OrdinalString)"/> method to
            test the two <see cref="T:Tektosyne.OrdinalString"/> instances for value inequality.</remarks>
        </member>
        <member name="M:Tektosyne.OrdinalString.op_GreaterThan(Tektosyne.OrdinalString,Tektosyne.OrdinalString)">
            <summary>
            Determines whether a specified <see cref="T:Tektosyne.OrdinalString"/> is greater than another
            specified <see cref="T:Tektosyne.OrdinalString"/>.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.OrdinalString"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.OrdinalString"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is greater than the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.OrdinalString.CompareTo(Tektosyne.OrdinalString)"/> method to determine the
            relative values of the two <see cref="T:Tektosyne.OrdinalString"/> instances.</remarks>
        </member>
        <member name="M:Tektosyne.OrdinalString.op_LessThan(Tektosyne.OrdinalString,Tektosyne.OrdinalString)">
            <summary>
            Determines whether a specified <see cref="T:Tektosyne.OrdinalString"/> is less than another
            specified <see cref="T:Tektosyne.OrdinalString"/>.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.OrdinalString"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.OrdinalString"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is less than the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.OrdinalString.CompareTo(Tektosyne.OrdinalString)"/> method to determine the
            relative values of the two <see cref="T:Tektosyne.OrdinalString"/> instances.</remarks>
        </member>
        <member name="M:Tektosyne.OrdinalString.op_GreaterThanOrEqual(Tektosyne.OrdinalString,Tektosyne.OrdinalString)">
            <summary>
            Determines whether a specified <see cref="T:Tektosyne.OrdinalString"/> is greater than or equal to
            another specified <see cref="T:Tektosyne.OrdinalString"/>.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.OrdinalString"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.OrdinalString"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is greater than or equal to the value
            of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.OrdinalString.CompareTo(Tektosyne.OrdinalString)"/> method to determine the
            relative values of the two <see cref="T:Tektosyne.OrdinalString"/> instances.</remarks>
        </member>
        <member name="M:Tektosyne.OrdinalString.op_LessThanOrEqual(Tektosyne.OrdinalString,Tektosyne.OrdinalString)">
            <summary>
            Determines whether a specified <see cref="T:Tektosyne.OrdinalString"/> is less than or equal to
            another specified <see cref="T:Tektosyne.OrdinalString"/>.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.OrdinalString"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.OrdinalString"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is less than or equal to the value of
            <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            This operator invokes the <see cref="M:Tektosyne.OrdinalString.CompareTo(Tektosyne.OrdinalString)"/> method to determine the
            relative values of the two <see cref="T:Tektosyne.OrdinalString"/> instances.</remarks>
        </member>
        <member name="M:Tektosyne.OrdinalString.op_Implicit(System.String)~Tektosyne.OrdinalString">
            <summary>
            Converts a <see cref="T:System.String"/> to the equivalent <see cref="T:Tektosyne.OrdinalString"/>.</summary>
            <param name="value">
            The <see cref="T:System.String"/> to wrap in an <see cref="T:Tektosyne.OrdinalString"/>.</param>
            <returns>
            A new <see cref="T:Tektosyne.OrdinalString"/> wrapping the specified <paramref name="value"/>.
            </returns>
        </member>
        <member name="M:Tektosyne.OrdinalString.op_Implicit(Tektosyne.OrdinalString)~System.String">
            <summary>
            Converts an <see cref="T:Tektosyne.OrdinalString"/> to the equivalent <see cref="T:System.String"/>.
            </summary>
            <param name="ordinal">
            The <see cref="T:Tektosyne.OrdinalString"/> instance whose <see cref="P:Tektosyne.OrdinalString.Value"/> property to extract.
            </param>
            <returns>
            The value of the <see cref="P:Tektosyne.OrdinalString.Value"/> property of the specified <paramref name="ordinal"/> instance.</returns>
        </member>
        <member name="M:Tektosyne.OrdinalString.System#IComparable#CompareTo(System.Object)">
            <overloads>
            Compares two <see cref="T:Tektosyne.OrdinalString"/> objects and returns an indication of their
            relative values.</overloads>
            <summary>
            Compares this instance of <see cref="T:Tektosyne.OrdinalString"/> and a specified object, which must
            be a <see cref="T:Tektosyne.OrdinalString"/>, and returns an indication of their relative values.
            </summary>
            <param name="obj">
            An <see cref="T:System.Object"/> to compare to this instance of <see cref="T:Tektosyne.OrdinalString"/>.
            </param>
            <returns><para>
            An <see cref="T:System.Int32"/> value indicating the relative order of this instance and
            <paramref name="obj"/>, as follows:
            </para><list type="table"><listheader>
            <term>Return Value</term><description>Condition</description>
            </listheader><item>
            <term>Less than zero</term>
            <description>The <see cref="P:Tektosyne.OrdinalString.Value"/> property of this instance is less than that of
            <paramref name="obj"/>.</description>
            </item><item>
            <term>Zero</term>
            <description>The <see cref="P:Tektosyne.OrdinalString.Value"/> property of this instance equals that of <paramref name="obj"/>.</description>
            </item><item>
            <term>Greater than zero</term><description><para>
            The <see cref="P:Tektosyne.OrdinalString.Value"/> property of this instance is greater than that of <paramref name="obj"/>.
            </para><para>-or-</para><para>
            <paramref name="obj"/> is a null reference.</para></description>
            </item></list></returns>
            <exception cref="T:System.ArgumentException">
            <paramref name="obj"/> is neither a <see cref="T:Tektosyne.OrdinalString"/> nor a null reference.
            </exception>
            <remarks><para>
            The specified <paramref name="obj"/> must be either a null reference or an instance of
            <b>OrdinalString</b>.
            </para><para>
            <b>CompareTo</b> determines the relative order of the two instances by calling <see cref="M:Tektosyne.StringUtility.CompareOrdinal(System.String,System.String)"/>.</para></remarks>
        </member>
        <member name="M:Tektosyne.OrdinalString.CompareTo(Tektosyne.OrdinalString)">
            <summary>
            Compares this instance and a specified <see cref="T:Tektosyne.OrdinalString"/> and returns an
            indication of their relative values.</summary>
            <param name="ordinal">
            A <see cref="T:Tektosyne.OrdinalString"/> to compare to this instance.</param>
            <returns><para>
            An <see cref="T:System.Int32"/> value indicating the relative order of this instance and
            <paramref name="ordinal"/>, as follows:
            </para><list type="table"><listheader>
            <term>Return Value</term><description>Condition</description>
            </listheader><item>
            <term>Less than zero</term>
            <description>The <see cref="P:Tektosyne.OrdinalString.Value"/> property of this instance is less than that of
            <paramref name="ordinal"/>.</description>
            </item><item>
            <term>Zero</term>
            <description>The <see cref="P:Tektosyne.OrdinalString.Value"/> property of this instance equals that of <paramref name="ordinal"/>.</description>
            </item><item>
            <term>Greater than zero</term><description>
            The <see cref="P:Tektosyne.OrdinalString.Value"/> property of this instance is greater than that of <paramref name="ordinal"/>.</description>
            </item></list></returns>
            <remarks>
            <b>CompareTo</b> determines the relative order of the two instances by calling <see cref="M:Tektosyne.StringUtility.CompareOrdinal(System.String,System.String)"/>.</remarks>
        </member>
        <member name="M:Tektosyne.OrdinalString.Equals(System.Object)">
            <overloads>
            Determines whether two <see cref="T:Tektosyne.OrdinalString"/> objects have the same value.
            </overloads>
            <summary>
            Determines whether this instance of <see cref="T:Tektosyne.OrdinalString"/> and a specified object,
            which must be a <see cref="T:Tektosyne.OrdinalString"/>, have the same value.</summary>
            <param name="obj">
            An <see cref="T:System.Object"/> to compare to this instance of <see cref="T:Tektosyne.OrdinalString"/>.
            </param>
            <returns>
            <c>true</c> if <paramref name="obj"/> is another <see cref="T:Tektosyne.OrdinalString"/> instance
            and its value is the same as this instance; otherwise, <c>false</c>.</returns>
            <remarks>
            If the specified <paramref name="obj"/> is another <see cref="T:Tektosyne.OrdinalString"/> instance,
            <b>Equals</b> calls <see cref="M:Tektosyne.StringUtility.CompareOrdinal(System.String,System.String)"/> to test the <see cref="P:Tektosyne.OrdinalString.Value"/> properties of the two <see cref="T:Tektosyne.OrdinalString"/> instances for value
            equality.</remarks>
        </member>
        <member name="M:Tektosyne.OrdinalString.Equals(Tektosyne.OrdinalString)">
            <summary>
            Determines whether this instance and a specified <see cref="T:Tektosyne.OrdinalString"/> have the
            same value.</summary>
            <param name="ordinal">
            A <see cref="T:Tektosyne.OrdinalString"/> to compare to this instance.</param>
            <returns>
            <c>true</c> if the value of <paramref name="ordinal"/> is the same as this instance;
            otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> calls <see cref="M:Tektosyne.StringUtility.CompareOrdinal(System.String,System.String)"/> to test the <see cref="P:Tektosyne.OrdinalString.Value"/> properties of the two <see cref="T:Tektosyne.OrdinalString"/> instances for value
            equality.</remarks>
        </member>
        <member name="M:Tektosyne.OrdinalString.Equals(Tektosyne.OrdinalString,Tektosyne.OrdinalString)">
            <summary>
            Determines whether two specified <see cref="T:Tektosyne.OrdinalString"/> objects have the same
            value.</summary>
            <param name="x">
            The first <see cref="T:Tektosyne.OrdinalString"/> to compare.</param>
            <param name="y">
            The second <see cref="T:Tektosyne.OrdinalString"/> to compare.</param>
            <returns>
            <c>true</c> if the value of <paramref name="x"/> is the same as the value of <paramref name="y"/>; otherwise, <c>false</c>.</returns>
            <remarks>
            <b>Equals</b> calls <see cref="M:Tektosyne.StringUtility.CompareOrdinal(System.String,System.String)"/> to test the <see cref="P:Tektosyne.OrdinalString.Value"/> properties of the two <see cref="T:Tektosyne.OrdinalString"/> instances for value
            equality.</remarks>
        </member>
        <member name="P:Tektosyne.OrdinalString.Value">
            <summary>
            Gets the <see cref="T:System.String"/> value of the <see cref="T:Tektosyne.OrdinalString"/>.</summary>
            <value>
            The <see cref="T:System.String"/> value of the <see cref="T:Tektosyne.OrdinalString"/>.</value>
            <remarks>
            <b>Value</b> may return a null reference or an empty string. This property never changes
            once the object has been constructed.</remarks>
        </member>
        <member name="T:Tektosyne.Collections.IKeyedValue`1">
            <summary>
            Provides an object with a unique key.</summary>
            <typeparam name="TKey">
            The type of the unique key.</typeparam>
            <remarks><para>
            <b>IKeyedValue</b> provides a generic read-only property, <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/>,
            that can be used to uniquely identify different instances of the implementing class. The
            derived interface <see cref="T:Tektosyne.Collections.IMutableKeyedValue`1"/> adds a method to set the <b>Key</b>
            property.
            </para><para>
            <b>IKeyedValue</b> instances that are stored in an <see cref="T:System.Collections.Generic.IList`1"/> collection can be
            identified by their <b>Key</b> values – just as if they were stored in an <see cref="T:System.Collections.Generic.IDictionary`2"/> collection, but without the need to maintain a separate
            <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component for each element.
            </para><para>
            <b>IKeyedValue</b> instances can also be stored as the <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> components of an <see cref="T:System.Collections.Generic.IDictionary`2"/> collection. In
            this case, their <b>Key</b> properties should mirror the associated <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> components. This key duplication allows clients to
            identify the <b>Value</b> components outside of the containing collection.</para></remarks>
        </member>
        <member name="P:Tektosyne.Collections.IKeyedValue`1.Key">
            <summary>
            Gets the key associated with the <see cref="T:Tektosyne.Collections.IKeyedValue`1"/>.</summary>
            <value>
            An object that uniquely identifies the <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance within
            any collection of compatible instances. This value is never a null reference.</value>
            <remarks>
            If the <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> instance is stored as the <see cref="P:System.Collections.Generic.KeyValuePair`2.Value"/> component of a <see cref="T:System.Collections.Generic.KeyValuePair`2"/>, this property should have the same value as the <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/> component of the <b>KeyValuePair</b>.</remarks>
        </member>
        <member name="T:Tektosyne.Collections.IMutableKeyedValue`1">
            <summary>
            Provides an object with a mutable unique key.</summary>
            <typeparam name="TKey">
            The type of the mutable unique key.</typeparam>
            <remarks>
            <b>IMutableKeyedValue</b> extends the <see cref="T:Tektosyne.Collections.IKeyedValue`1"/> interface with an
            additional <see cref="M:Tektosyne.Collections.IMutableKeyedValue`1.SetKey(`0)"/> method that allows clients to
            change the <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> property of implementing classes.</remarks>
        </member>
        <member name="M:Tektosyne.Collections.IMutableKeyedValue`1.SetKey(`0)">
            <summary>
            Sets the <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> associated with the <see cref="T:Tektosyne.Collections.IMutableKeyedValue`1"/>.</summary>
            <param name="key">
            The new value for the <see cref="P:Tektosyne.Collections.IKeyedValue`1.Key"/> property.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="key"/> is a null reference.</exception>
        </member>
    </members>
</doc>
